智林STM32开发板LED程序解析 关于智林STM32开发板的LED程序解析 智林开发板是完全自主开发板,不象有些大公司,说是自己的开发板,其实是ST公司批发出来的,再卖给买家.再者智林开发板做功精良,用材讲究,有个65536的1.8寸真彩屏,附送的USB线都是上层好线.且物超所值,不贵但性价比很高,其例子超简单,完全没用STM32那个库,当然用户就想用那个库可以自己编写用库的程序, 现就LED程序解析如下:
*/ /*----------------------------------------------------------* | 引入相关芯片的头文件 | *----------------------------------------------------------*/ #include <stm32f10x_lib.h> // STM32F10x Library Definitions #include "STM32_Init.h" // STM32 Initialization /*----------------------------------------------------------* | HARDWARE DEFINE | *----------------------------------------------------------*/ #define LED ( 1 << 5 ) // PB5: LED D2 /*----------------------------------------------------------* | Delay | | 延时 Inserts a delay time. | | nCount: 延时时间 | | nCount: specifies the delay time length. | *----------------------------------------------------------*/ void Delay(vu32 nCount) { for(; nCount != 0; nCount--); } /*----------------------------------------------------------* | MIAN ENTRY | *----------------------------------------------------------*/ int main (void) { stm32_Init (); // STM32 setup for(;;) { GPIOB->ODR &= ~LED; // switch on LED Delay(2000000); GPIOB->ODR |= LED; // switch off LED Delay(2000000); } } /*----------------------------------------------------------* | END OF FILE | *----------------------------------------------------------*/
就这么一小段,LED就点亮了,完全没用库,程序空间超小,有人不理解,GPIOB在哪定义了,ODR又是什么,时钟又在哪里, 其实,智林这段程序完全用了,Keil下的那个STM32F10x.s文件 接着是STM32Init.c 在这里初始化实钟 void stm32_Init () { #if __EFI_SETUP stm32_EfiSetup (); #endif #if __CLOCK_SETUP stm32_ClockSetup (); #endif #if __SYSTICK_SETUP stm32_SysTickSetup (); #endif #if __RTC_SETUP stm32_RtcSetup (); #endif #if __TIMER_SETUP stm32_TimerSetup (); #endif #if __GPIO_SETUP stm32_GpioSetup (); #endif #if __USART_SETUP stm32_UsartSetup(); #endif #if __EXTI_SETUP stm32_ExtiSetup(); #endif #if __TAMPER_SETUP stm32_TamperSetup(); #endif #if __IWDG_SETUP stm32_IwdgSetup(); // this should be the last function. watchdog is running afterwards #endif } // end of stm32_Init GPIOB也是在STM32F10x_map.h文件中定义的 而ODR也是在STM32F10x_map.h中定义的 typedef struct { vu32 CRL; vu32 CRH; vu32 IDR; vu32 ODR; vu32 BSRR; vu32 BRR; vu32 LCKR; } GPIO_TypeDef;
而那个LED灯,硬件接在PB5上 #define LED ( 1 << 5 ) // PB5: LED D2 根据STM32F10x_map.h,就应射在管亮来寄存器上,所以就点亮了
http://shop35738797.taobao.com/
|