用LED熟悉stm32代码编写
STM32新手LED
刚刚接触STM32时,都会比较懵逼,不要慌,静下心去想,不要只看不动手敲。这里的“敲”不是手打,在对应的.h文件中找到要使用的函数(一般在文件最后),学会技巧go to definition of 'xxxx’找到函数主体,选择需要的参数。
编写led.c
首先添加对应.h文件
led初始化
1.开启时钟
mini板上的两个灯的引脚为PA8(一般为红色),PD2(一般为黄色),所以我们要开启高速挂载线APB2上的GPIOA和GPIOD的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD,ENABLE);
在stm32f10x_rcc.h的最后声明
2.在led.c中对led灯的引脚进行初始化
建立一个结构体变量GPIO_InitTypeDef GPIO_InitStructure;
点击右键,查看需要配置的变量。
可以看到,我们需要配置引脚号,速度,模式。
往上拉,我们就能看见引脚,速度,模式中我们可以选择的内容,根据需求选择。
如图,将PA8和PD2配置完毕。
led初始化结束
编写其他函数
如果你是从一个空文件开始编写,可以自己写一个延时函数,或者添加delay.h头文件,直接调用库里面的延时函数。建议调用库函数
图中是自定义延时函数
编写led.h
条件编译
添加用到的.h文件
我一般只添加#include “sys.h”
宏定义
对要使用的宏进行定义
例如
声明.c文件中的函数
声明结束以后,结束条件编译。如果不懂条件编译的作用,可以百度。
编写main.c
添加使用到的.h文件
#include "led.h" #include "delay.h" #include "sys.h"
调用初始化函数
delay_init(); LED_Init();
这里的LED初始化不能少,调用delay初始化是因为后面会利用延时来控制灯亮与灭的时间差
写一个死循环,在不断电的情况下一直运行
while(1) { //GPIO_SetBits(GPIOA,GPIO_Pin_8); //GPIO_ResetBits(GPIOD,GPIO_Pin_2); LED0=1; LED1=0; Delay(10000000); //delay_ms(1000); //GPIO_SetBits(GPIOD,GPIO_Pin_2); //GPIO_ResetBits(GPIOA,GPIO_Pin_8); LED0=0; LED1=1; Delay(10000000); //delay_ms(1000); }
在这里,LED0=1等价于GPIO_SetBits(GPIOA,GPIO_Pin_8),LED=0等价于GPIO_ResetBits(GPIOA,GPIO_Pin_8)。注意,如果你使用LED0,LED1,记得在led.h里宏定义。
Delay(xxxx)是我的自定义函数,如果要在这里使用,也需要在led.h里面声明。delay_ms(xxxx)是delay.h中已有的函数,使用较方便,建议用这个函数进行延时。
仿真波形
该波形为延时为1s的流水灯波形。如果你也想仿真,可以百度,不难。
第一次写博客,有不对的地方,大家可以提出来。
- 点赞
- 收藏
- 分享
- 文章举报
- 利用keil编写stm32循环点亮一LED灯
- STM32 LED实验代码 笔记
- iOS 纯代码编写8*8 LED汉字走字屏
- 编写代码?先熟悉一下编程语言界限吧!
- 关于STM32软件复位代码编写 (转)
- STM32 (STM32F103C8T6) 用PCA9685控制舵机和Led,代码极简可用
- 关于STM32软件复位代码编写
- 使用 coocox 编写 stm32 代码 (过程、问题) 归纳
- 关于STM32软件复位代码编写
- 4412 链接c库 后编写c代码 访问 led灯
- 关于STM32软件复位代码编写 (转)
- STM32程序编写基本流程(LED流水灯)
- <<Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法>>笔记-熟悉Objective-C
- 关于STM32软件复位代码编写
- Android架构实例分析之编写hello驱动的HAL层代码
- 框架网页中如何编写前进后退代码
- 编写高质量代码–改善python程序的建议(三)
- 如何编写异常安全的C++代码
- iOS应用开发最佳实践:编写高质量的Objective-C代码
- [VHDL+Verilog]良好的代码编写风格(二十五条)