stm32标准外设库使用详解
时间:11-09
来源:互联网
点击:
跑马灯程序
现在可以使用stm32标准外设库了,下面以一个简单的跑马灯程序说明。
在init目录下建立main.c作为系统入口。
在src下建立一个bsp目录用来放置板级支持代码,建立led.c,led.h。
代码如下:
led.h
- #ifndef_LED_H_
- #define_LED_H_
- #include
- #defineLED_00
- #defineLED_11
- #defineLED_22
- voidled_init(void);
- voidled_on(uint32_tn);
- voidled_off(uint32_tn);
- #endif
led.c
- #include"stm32f10x.h"
- #include"led.h"
- voidled_init(void)
- {
- GPIO_InitTypeDefGPIO_InitStructure;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
- GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8;
- GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;
- GPIO_Init(GPIOC,&GPIO_InitStructure);
- }
- voidled_on(uint32_tn)
- {
- switch(n)
- {
- caseLED_0:
- GPIO_SetBits(GPIOC,GPIO_Pin_6);
- break;
- caseLED_1:
- GPIO_SetBits(GPIOC,GPIO_Pin_7);
- break;
- caseLED_2:
- GPIO_SetBits(GPIOC,GPIO_Pin_8);
- break;
- default:
- break;
- }
- }
- voidled_off(uint32_tn)
- {
- switch(n)
- {
- caseLED_0:
- GPIO_ResetBits(GPIOC,GPIO_Pin_6);
- break;
- caseLED_1:
- GPIO_ResetBits(GPIOC,GPIO_Pin_7);
- break;
- caseLED_2:
- GPIO_ResetBits(GPIOC,GPIO_Pin_8);
- break;
- default:
- break;
- }
- }
根据不同的板子需要对该代码中的管脚进行修改,但结构是一样的。
main.c
- #include"led.h"
- staticvoiddelay(uint32_tms)
- {
- uint32_tcount=8000;
- while(ms--)
- {
- while(count--);
- count=8000;
- }
- }
- intmain(void)
- {
- led_init();
- for(;;)
- {
- led_on(LED_0);
- led_off(LED_1);
- led_off(LED_2);
- delay(1000);
- led_off(LED_0);
- led_on(LED_1);
- led_off(LED_2);
- delay(1000);
- led_off(LED_0);
- led_off(LED_1);
- led_on(LED_2);
- delay(1000);
- }
- }
在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()打钩,这一步大家可以根据自己手上的仿真器做不同选择。
stm32标准外设 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)