微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > stm32标准外设库使用详解

stm32标准外设库使用详解

时间:11-09 来源:互联网 点击:

跑马灯程序
现在可以使用stm32标准外设库了,下面以一个简单的跑马灯程序说明。

在init目录下建立main.c作为系统入口。

在src下建立一个bsp目录用来放置板级支持代码,建立led.c,led.h。

代码如下:
led.h

  1. #ifndef_LED_H_
  2. #define_LED_H_
  3. #include
  4. #defineLED_00
  5. #defineLED_11
  6. #defineLED_22
  7. voidled_init(void);
  8. voidled_on(uint32_tn);
  9. voidled_off(uint32_tn);
  10. #endif

led.c

  1. #include"stm32f10x.h"
  2. #include"led.h"
  3. voidled_init(void)
  4. {
  5. GPIO_InitTypeDefGPIO_InitStructure;
  6. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
  7. GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8;
  8. GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
  9. GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;
  10. GPIO_Init(GPIOC,&GPIO_InitStructure);
  11. }
  12. voidled_on(uint32_tn)
  13. {
  14. switch(n)
  15. {
  16. caseLED_0:
  17. GPIO_SetBits(GPIOC,GPIO_Pin_6);
  18. break;
  19. caseLED_1:
  20. GPIO_SetBits(GPIOC,GPIO_Pin_7);
  21. break;
  22. caseLED_2:
  23. GPIO_SetBits(GPIOC,GPIO_Pin_8);
  24. break;
  25. default:
  26. break;
  27. }
  28. }
  29. voidled_off(uint32_tn)
  30. {
  31. switch(n)
  32. {
  33. caseLED_0:
  34. GPIO_ResetBits(GPIOC,GPIO_Pin_6);
  35. break;
  36. caseLED_1:
  37. GPIO_ResetBits(GPIOC,GPIO_Pin_7);
  38. break;
  39. caseLED_2:
  40. GPIO_ResetBits(GPIOC,GPIO_Pin_8);
  41. break;
  42. default:
  43. break;
  44. }
  45. }

根据不同的板子需要对该代码中的管脚进行修改,但结构是一样的。

main.c

  1. #include"led.h"
  2. staticvoiddelay(uint32_tms)
  3. {
  4. uint32_tcount=8000;
  5. while(ms--)
  6. {
  7. while(count--);
  8. count=8000;
  9. }
  10. }
  11. intmain(void)
  12. {
  13. led_init();
  14. for(;;)
  15. {
  16. led_on(LED_0);
  17. led_off(LED_1);
  18. led_off(LED_2);
  19. delay(1000);
  20. led_off(LED_0);
  21. led_on(LED_1);
  22. led_off(LED_2);
  23. delay(1000);
  24. led_off(LED_0);
  25. led_off(LED_1);
  26. led_on(LED_2);
  27. delay(1000);
  28. }
  29. }

在project中建立init,bsp组,并将各种代码加入。在工程的Options中,c/c++选项卡的Include Paths中添加.\include;.\src\libstm32\cmsis;.\src\libstm32\inc;.\src\bsp;。
Output选项卡Select Folder for Objects中选.\output\obj。
Listing选项卡Select Folder for Listings中选.\output\list。
Debug选项卡选use ULINK Cortex Debugger, Run to main()打钩,这一步大家可以根据自己手上的仿真器做不同选择。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top