教你用STM32一步一步点亮led灯
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
STM32之一步一步点亮led (2011-05-09 19:40)
标签: stm32led v3.4MDK 4.12入门分类:stm32
入手stm32以来,一直想快速上手,所以在各大论坛闲逛,各个达人的blog
上学习,正所谓欲速则不达,心急是吃不了热豆腐的!有木有?
最终决定使用st官网的库开发,据大侠们写道使用库可以快速上手,貌似的确如此,一个个教程写的那么好,直接拿过来用就是了。可是那么多个库,聪明的你请告诉到底选择哪一个啊?My God!实话实说,我被这些库折腾了个够!好吧,我最后还是承认最后用的是v3.4的库,是很方便!
切入正题,点亮LED。
硬件:红牛开发板,STM32F103ZET6(144封装).
软件: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:最底层接口。StartUp:系统启动文件。StdPeriph_Lib:stm32外围设
备驱动文件。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库》
4.stm32f10x_conf.h
这个文件和 V2 版本的库的内容是一样的,需要使用哪些外设就取消哪些外设的注释。例如需要使用 GPIO功能,但不使用 SPI功能,就可以这样操作。--摘自《在Keil MDK+环境下使用STM32 V3.4库》
1.#include"stm32f10x_gpio.h"
2./*#include"stm32f10x_spi.h"*/
5.main.c
这个文件就不用多说了,自己编写。 --摘自《在Keil MDK+环境下使用
STM32 V3.4库》
6.stm32f10x_it.c/h
这两个文件包含了 stm32中断函数,在源文件和头文件中并没有把所有的中断入口函数都写出来,而
只写了 ARM内核的几个异常中断,其他的中断函数需要用户自己编写。--摘自《在Keil MDK+环境下使用STM32 V3.4库》
OK,开始写代码了。
由于3.4的库在启动的时候已经设置好时钟了(将在后面有讲述),所以我们只需设置好对应的GPIO即可。
查看硬件连接:
来点亮PF6.
新建led.c与led.h,添加到User Code下面。
led.h