STM32之一步一步点亮led (2011-05-09 19:40)
标签stm32  led  v3.4  MDK 4.12  入门  分类: stm32
 入手stm32以来,一直想快速上手,所以在各大论坛闲逛,各个达人的blog上学习,正所谓欲速则不达,心急是吃不了热豆腐的!有木有? 
最终决定使用st的库开发,据大侠们写道使用库可以快速上手,貌似的确如此,一个个教程写的那么好,直接拿过来用就是了。可是那么多个库,聪明的你请告诉到底选择哪一个啊?My God!实话实说,我被这些库折腾了个够!好吧,我最后还是承认最后用的是v3.4的库,是很方便!
切入正题,点亮LED
硬件:红牛开发板,STM32F103ZET6144封装).
软件: RealView MDK 4.12
stm32固件库:v3.4 附上自己整理后的库: V3.4_clean.rar  
根据库自己整理了下,新建了工程模板如下图:(主要参考文章《在Keil MDK+环境下使用STM32 V3.4.pdf》) 在KeilMDK+环境下使用STM32V3.4库.pdf  
入图所示:新建一个目录01_ProLed,建议放在英文路径下,避免不必要的麻烦。将上面的库v3.4解压到此目录,再新建一个project目录,存放工程。
说明:
CMSIS:最底层接口。system的头文件StartUp:系统启动文件。StdPeriph_Libstm32外围设备驱动文件。Project:工程文件。User:用户文件。新建工程步骤:此处略去300字。
简单说明:
1.core_cm3.c/core_cm3.h 
该文件是内核访问层的源文件和头文件,查看其中的代码多半是使用汇编语言编写的。在线不甚了解。--摘自《在Keil MDK+环境下使用STM32 V3.4库》
2.stm32f10x.h 
该文件是外设访问层的头文件,该文件是最重要的头文件之一。就像51里面的reg51.h一样。例如定义了 CPU是哪种容量的 CPU,中断向量等等。除了这些该头文件还定义了和外设寄存器相关的结构体,例如:
1. typedef struct
2. {
3.   __IO uint32_t CR;
4.   __IO uint32_t CFGR;
5.   __IO uint32_t CIR;
6.   __IO uint32_t APB2RSTR;
7.   __IO uint32_t APB1RSTR;
8.   __IO uint32_t AHBENR;
9.   __IO uint32_t APB2ENR;
10.   __IO uint32_t APB1ENR;
11.   __IO uint32_t BDCR;
12.   __IO uint32_t CSR;
13.
14. #ifdef STM32F10X_CL
15.   __IO uint32_t AHBRSTR;
16.   __IO uint32_t CFGR2;
17. #endif /* STM32F10X_CL */
18.
19. #if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL)
20.   uint32_t RESERVED0;
21.   __IO uint32_t CFGR2;
22. #endif /* STM32F10X_LD_VL || STM32F10X_MD_VL || STM32F10X_HD_VL */
23. } RCC_TypeDef;
包含了那么多寄存器的定义,那么在应用文件中(例如自己编写的 main 源文件)只需要包含
stm32f10x.h即可,而不是以前固件库的需要包含 stm32f10x_conf.h这个头文件。--摘自《在Keil MDK+环境下使用STM32 V3.4库》
3.system_stm32f10x.c/h 
该头文件也可以称为外设访问层的头文件和源文件。在该文件中可以定义系统的时钟频率,定义低速时钟
总线和高速时钟总线的频率,其中最关键的函数就是 SystemInit()了,这个后面会详细介绍。总之这两
个文件是新固件库的重点,有了它粮也大大简化了使用 stm32的初始化工作。--摘自《在Keil MDK+环境下使用STM32 V3.4库》

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。