11届题目分析
主要用到了
- 按键:按键扫描,消抖处理 + 每个按键执行的任务
- LCD:按照要求实现两个显示界面即可
- LED:在按键按下的条件下,点亮或熄灭某个灯
- ADC:获取R37输出的电压值,并以此控制PWM输出信号占空比
- PWM:通过PA6和PA7引脚输出频率和占空比一定的波
功能模块
STM32CubeMX创建初始工程
-
各个管脚
-
时钟
-
文件名称路径设置
-
生成工程,打开KEIL
KEIL
key
- 按键刷新时间不大于100ms
- 按键扫描函数keyscan()
- 按键执行任务函数**(一开始可以先空着)**
LCD
- 添加lcd.c文件
- LCD初始化
- 刷新时间100ms
- 首先编写符合题目要求的LCD的两个显示界面 (一开始可以先空着)
void task_display(void)
{
if(LCD_show==1)
{
LCD_SetBackColor(Black);
LCD_SetTextColor(White);
LCD_DisplayStringLine(Line0,(unsigned char *)" Data ");
LCD_DisplayStringLine(Line1,(unsigned char *)" ");
sprintf((char *)str, " V:%.2fV ", R37_Value * 3.3 / 4096);
LCD_DisplayStringLine(Line2, (uint8_t *)str);
LCD_DisplayStringLine(Line3,(unsigned char *)" ");
sprintf((char *)str, " Mode:%s ",mode_str);
LCD_DisplayStringLine(Line4, (uint8_t *)str);
LCD_DisplayStringLine(Line5,(unsigned char *)" ");
LCD_DisplayStringLine(Line6,(unsigned char *)" ");
LCD_DisplayStringLine(Line7,(unsigned char *)" ");
LCD_DisplayStringLine(Line8,(unsigned char *)" ");
LCD_DisplayStringLine(Line9,(unsigned char *)" ");
}
else if(LCD_show==2)
{
LCD_SetBackColor(Black);
LCD_SetTextColor(White);
LCD_DisplayStringLine(Line0