一.LED
先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题
二.按键
按键配置,由原理图按键所对引脚要GPIO_Input

生成代码,在文件夹中添加code文件夹,code中添加fun.c、fun.h、headfile.h文件,去资源包中把lcd.c、lcd.h、fonts.h添加到code中,然后去写按键控制灯亮灭的程序,看是否有问题


按键控制led没有问题后写lcd显示代码,显示没问题后,解决lcd与led引脚冲突问题,方法在我的其他文章中CSDN
HAL_GPIO_WritePin (GPIOD,GPIO_PIN_2,GPIO_PIN_RESET ); //为解决引脚冲突初始化lcd时 LCD_Init (); 要将锁存器锁存器来;
LCD_Clear (Black);
LCD_SetBackColor(Black);
LCD_SetTextColor(White);
三.LCD显示函数
void lcd_show(void)
{
sprintf(text," hello world");
LCD_DisplayStringLine (Line0 ,(uint8_t *)text);
}
四.显示功能


四.ADC(电压)功能
adc配置不需要中断




五.PWM输出(不用中断,需时钟源,有易错点)
PWM输出初始化时需要给CCR赋值,不然没有频率输出


六.按键功能
B1按键


B2B3按键


睡眠界面下按键

进入睡眠模式

七.串口功能(有小问题)

本次串口使用DMA
先设置波特率和异步通信,修改引脚

启用DMA功能

开启中断,之后生成代码

找串口接收函数,这里使用的函数与其他函数所在地方不同,注意查看位置

在文件中找到串口接收回调函数,写串口服务函数
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size);


写好之后写一个串口接收处理函数,用于判断接收的字符是否是题目要求的,是去执行要求的功能语句

八.PWM功能
占空比的另一种测量方式
假设我们用PA6去捕获PWM,PA6引脚用的是TIM3 CH1,配置过程和正常的捕获配置一样,只是main函数中的时候额外打开一个通道二
占空比就在回调函数里计算了,我们配置的时候是CH1,计算频率除的捕获值还是用CH1通道捕获的值,计算占空比的时候就用通道二的除通道一的。
乘100.0是计算的结果转成小数,%。

九.脉冲输出
方波的占空比就是50%
频率的改变除了可以改变ARR还可以改变PSC,改变PSC是可以直接改变的,ARR是不行的
用TIM8来做定时器

十.led显示

