久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5711|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

利用Eclipse IDE for C/C++ Developers和GNU Tools ARM Embedded編譯器

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:77367 發(fā)表于 2015-4-19 00:57 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
工作環(huán)境說明:

1.硬件平臺(tái): DX開發(fā)板主板 + DX103核心板

2.硬件平臺(tái): Eclipse IDE for C/C++ Developers + GNU Tools ARM Embedded
  (1) IDE:    Eclipse IDE for C/C++ Developers
  (2) 編譯器: GNU Tools ARM Embedded編譯器,支持STM32F407最新的HAL驅(qū)動(dòng)庫


用Eclipse IDE for C/C++ Developers新建一個(gè)C工程模板,主函數(shù)代碼如下:

//
// This file is part of the GNU ARM Eclipse distribution.
// Copyright (c) 2014 Liviu Ionescu.
//

// ----------------------------------------------------------------------------

#include <stdio.h>
#include "diag/Trace.h"

#include "Timer.h"
#include "BlinkLed.h"

// ----------------------------------------------------------------------------
//
// STM32F4 led blink sample (trace via ITM).
//
// In debug configurations, demonstrate how to print a greeting message
// on the trace device. In release configurations the message is
// simply discarded.
//
// To demonstrate POSIX retargetting, reroute the STDOUT a.n.d STDERR to the
// trace device a.n.d display messages on both of them.
//
// Then demonstrates how to blink a led with 1Hz, using a
// continuous loop a.n.d SysTick delays.
//
// On DEBUG, the uptime in seconds is also displayed on the trace device.
//
// Trace support is enabled by adding the TRACE macro definition.
// By default the trace messages are forwarded to the ITM output,
// but can be rerouted to any device o.r completely suppressed, by
// changing the definitions required in system/src/diag/trace_impl.c
// (currently OS_USE_TRACE_ITM, OS_USE_TRACE_SEMIHOSTING_DEBUG/_STDOUT).
//

// ----- Timing definitions -------------------------------------------------

// Keep the LED on for 2/3 of a second.
#define BLINK_ON_TICKS  (TIMER_FREQUENCY_HZ * 2 / 3)
#define BLINK_OFF_TICKS (TIMER_FREQUENCY_HZ - BLINK_ON_TICKS)

// ----- main() ---------------------------------------------------------------

// Sample pragmas to cope with warnings. Please note the related line at
// the end of this function, used to pop the compiler diagnostics status.
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-parameter"
#pragma GCC diagnostic ignored "-Wmissing-declarations"
#pragma GCC diagnostic ignored "-Wreturn-type"

/*
* 大蝦開發(fā)板的5個(gè)LED指示燈對(duì)應(yīng)的GPIO
* PA0:  LED1
* PB0:  LED2
* PB14: LED3
* PD13: LED4
* PD12: LED5
*
* 大蝦開發(fā)板的按鍵對(duì)應(yīng)的GPIO
* PB10: K1
* PC2:  K2
*
* */

int main(int argc, char* argv[])
{
  // By customising __initialize_args() it is possible to pass arguments,
  // for example when running tests with semihosting you can pass various
  // options to the test.
  // trace_dump_args(argc, argv);

  // Send a greeting to the trace device (skipped on Release).
  trace_puts("Hello ARM World!");

  // The standard output a.n.d the standard error should be forwarded to
  // the trace device. For this to work, a redirection in _write.c is
  // required.
  puts("Standard output message.");
  fprintf(stderr, "Standard error message.");

  // At this stage the system clock should have already been configured
  // at high speed.
  trace_printf("System clock: %uHz", SystemCoreClock);

  timer_start();

  blink_led_init();
  


  uint32_t seconds = 0;

  while (1)
    {
//      blink_led_on();
      timer_sleep(BLINK_ON_TICKS);

//      blink_led_off();
      timer_sleep(BLINK_OFF_TICKS);

      ++seconds;
      HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_0);
      HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);
      HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_14);
      HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_13);
      HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_12);
      // Count seconds on the trace device.
      trace_printf("Second %u", seconds);
    }
}
#pragma GCC diagnostic pop


// 在BlinkLed.c中初始化DX開發(fā)板的5個(gè)LED指示燈,以及K1、K2鍵對(duì)應(yīng)的GPIO
// 用STM32CubeMX生成的兩個(gè)中斷函數(shù)整個(gè)拷貝過來

void blink_led_init()
{
  // Enable GPIO Peripheral clock
  RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;
  RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN;
  RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN;

  GPIO_InitTypeDef GPIO_InitStructure;

  // Configure pin in output push/pull mode
  GPIO_InitStructure.Pin  = GPIO_PIN_0;
  GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStructure.Speed = GPIO_SPEED_FAST;
  GPIO_InitStructure.Pull = GPIO_PULLUP;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);

  HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);

  GPIO_InitStructure.Pin  = GPIO_PIN_14;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);

  GPIO_InitStructure.Pin  = GPIO_PIN_13 | GPIO_PIN_12;
  HAL_GPIO_Init(GPIOD, &GPIO_InitStructure);


  /*Configure GPIO pin : PB10 */
  GPIO_InitStructure.Pin = GPIO_PIN_10;
  GPIO_InitStructure.Mode = GPIO_MODE_IT_FALLING; /* 下降沿中斷 */
  GPIO_InitStructure.Pull = GPIO_PULLUP;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);

  /* EXTI interrupt init */
  HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0);
  HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);

}

// 以下兩個(gè)中斷函數(shù)由stm32cubemx軟件自動(dòng)生成,很方便

/**
* @brief This function handles EXTI Line[15:10] interrupts.
*/
void EXTI15_10_IRQHandler(void)
{
  /* USER CODE BEGIN EXTI15_10_IRQn 0 */

  /* USER CODE END EXTI15_10_IRQn 0 */
  HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_10); /* 此處設(shè)置斷點(diǎn),全速運(yùn)行,然后按下K1,就能到達(dá)這里 */
  /* USER CODE BEGIN EXTI15_10_IRQn 1 */
   
  /* USER CODE END EXTI15_10_IRQn 1 */
}

/**
* @brief This function handles EXTI Line2 interrupt.
*/
void EXTI2_IRQHandler(void)
{
  /* USER CODE BEGIN EXTI2_IRQn 0 */

  /* USER CODE END EXTI2_IRQn 0 */
  HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_2); /* 此處設(shè)置斷點(diǎn),全速運(yùn)行,然后按下K2,就能到達(dá)這里 */
  /* USER CODE BEGIN EXTI2_IRQn 1 */

  /* USER CODE END EXTI2_IRQn 1 */
}




【圖片】進(jìn)入KEY1按鍵中斷(PB10).jpg,在中斷函數(shù)中設(shè)置斷點(diǎn),全速運(yùn)行,然后按開發(fā)板的K1鍵
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品视频www| 99久热在线精品视频观看 | 国产精品久久久久久久久免费相片 | 精品国产aⅴ | 韩国电影久久 | 午夜视频在线观看视频 | 在线视频 亚洲 | 成人在线视频一区 | 日韩精品在线观看网站 | 亚洲精品视频一区二区三区 | 91精品国产色综合久久不卡98 | 蜜桃视频在线观看免费视频网站www | 国产精品成人久久久久 | 亚洲精品精品 | 久久久一区二区三区 | 久久久久中文字幕 | 欧美一区二区在线视频 | 国产欧美在线 | 日韩亚洲一区二区 | 久久久久久久久国产成人免费 | 日韩欧美国产精品一区二区三区 | 亚洲精品乱码久久久久久蜜桃 | 91久久精品| 国产网站在线免费观看 | 久久精品亚洲一区二区三区浴池 | 日本高清视频在线播放 | 全免费a级毛片免费看视频免 | 欧美天堂| 国产精品久久久久久久久久久久午夜片 | 国产精品国产精品国产专区不片 | 欧美精品久久久久 | 国产精品a久久久久 | 国产精产国品一二三产区视频 | 欧美日韩一区二区三区视频 | 国产色在线 | 欧美三级久久久 | 免费的av网站 | 伊人超碰在线 | 亚洲一区二区三区免费 | 欧美一区二区在线播放 | 99日韩|