
STM32实验ALL_IN_ONE
前言
在这个实验项目中,我使用STM32CubeMX配置了基础硬件,实现了PWM呼吸灯效果、DMA接收串口数据、ADC双通道测电压等功能。经过一番调试,最终成功实现了所有功能,同时也解决了一些遇到的问题。下面将详细介绍整个实验的过程和注意事项。
基础配置
开启时钟
LCD
这里不要忘了开启PB0
开启串口1,添加DMA
TIM
因为PB5接的是LED灯,所以直接选择PB5,如果自动选不会选PB5。
ADC
配置完,生成代码
代码编写
测试
首先测试一下各个功能是否正常
将我之前写的库导入,将多余的代码删去,首先编译一下。
接下来测试串口和LED
DMA接收
uart.c
1 | volatile uint8_t rx_len = 0; //接收一帧数据的长度 |
1 | void MX_USART1_UART_Init(void) |
uart.h
1 | extern UART_HandleTypeDef huart1; |
main.c
1 | /* |
while循环
1 | while (1) |
stm32f1xx_it.c中
1 |
|
发送数据-测试成功
加入PWM呼吸灯代码
测试成功
加入全部代码
PWM
实现LED呼吸灯效果
while 函数中
1 | HAL_Delay(20); |
PWM控制电机转速
1 | KeyNum = key_scan(1);//通过按键扫描函数,获取按键值 |
ADC双通道测电压
1 | for (i = 0, ad1 = 0, ad2 = 0; i < 100;) |
遇到的问题
LCD和OLED同时开启时,初始化失败
解决方案:
因为我一开始使用的I2C1,换到I2C2问题解决。
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自星染Blog
评论