1.工程准备

创建一文件夹存放自己的代码,并在mdk中include上文件夹地址

把所有自身代码的头文件都放在headfile头文件中,之后只需要在新的文件中引用headfile即可
headfile中先提前可加入
#include "stdio.h"
#include "string.h"
#include "stdint.h"
这三个c语言头文件的引用
2.led显示
u
LED是使用锁存器控制,使用了PC8-PC15去控制led的亮灭,PD2控制锁存器的启用和所存,当PD2为低电平时,锁存器所存当前状态,当PD2为高电平时,锁存器可以修改状态。
3.led闪烁

设置定时为1s
在中断中进行灯的操作
特别地:在使用中断的时候需要在主函数中对中断先使能 HAL_TIM_Base_Start_IT(&htim2);
4.lcd屏幕使用

将赛方提供的lcd驱动中的三个文件放进自己的code文件中
由于lcd和led的引脚复用问题,所以在使用lcd函数操作的时候需要防止led的引脚被操作

需要提前将lcd函数加入两行,如上,以做到在函数执行前后的GPIOC的状态不被改变

并且在使用lcd初始化部分将锁存器使能引脚打开,将led状态锁存
lcd的初始化部分至少初始化四个,lcd屏幕背景,文字背景,和文字颜色

lcd显示函数则使用sprintf将文字存入char变量中再转成int型使用lcd显示行字符的函数
5.按键

按键是 PB1.PB0.PA0.PB2
需要将按键设置为上拉输入,当按键没按下时,引脚是高电平,当按键按下时,引脚为低电平

判断按键是否按下

按键长按,可以通过定时器计时去实现
6.PWM波输出
1)占空比为CCR/ARR+1
2)PWM波输出需要使能 HAL_TIM_PWM_Start(&htimx,timchannelx)
7.TIM输入捕获

输入捕获就是两次上升(下降)沿,HAL_TIM_ReadCapturedValue(htim,TIM_CHANNEL_1)会对CNT进行一个保存
8.ADC测量

配置对应引脚的adc状态

后可以用采集到的adc_value/4096*3.3得到电压,因为adc的采集到的值是0-4096
9.串口通信

对串口一选择异步通信


可以利用中断回调函数对接受到字符的时候做一些处理
特别地要在主函数中使用 HAL_UART_Receive_IT(&huart1, &rx_data, 1);
并且在中断回调结束语句中再使用一次,可以保证每次在接受完毕后再次开启接受中断,并且接受中断只能接受一个字节,所以需要接受到的字节存起来
**关于特殊字符的接受,可以使用sscanf函数将数据分开存储
