蓝桥杯第13届真题2

由硬件框图可以知道我们要配置LED 和按键

一.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);

}

四.界面显示

购买界面

按照要求把其显示的东西先显示出来

价格界面

界面转换

写好三个界面的显示函数后需要写一个界面转换的函数,按要求B1按键负责界面转换,用一个标志位来解决界面转换。

五.按键功能实现

B2按键

B1按键的功能我们在界面转换哪里已经完成,现在完成B2按键

在C语言中,1.0f表示一个单精度浮点数(float类型)的字面值。

具体来说:‌ ‌1.0f的含义‌

1.0f中的f后缀明确表示这是一个单精度浮点数(float类型)。如果不加f,默认情况下1.0会被视为双精度浮点数(double类型)。

‌与1.0的区别‌

1.0是双精度浮点数(double类型),占用64位内存,精度更高。

1.0f是单精度浮点数(float类型),占用32位内存,精度较低,但计算速度可能更快。

库存界面

B3按键

B4按键

六.EEPROM存储功能(不熟)

去资源包中把IIC_hal.c与.h添加到code文件中,添加头文件,main中初始化

写好之后测试一下是否正确

七.串口输出接收功能(不熟)

需要把PA9设置为TX PA10为RX,开启中断后生成代码

添加头文件,在usart.h中找到

输出

HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout),串口发送函数

定义一个数组存放要发送的数据char send[20];

接收

细节不会请看CSDN

在头文件中找到**串口接收回调函数HAL_UART_RxCpltCallback(**UART_HandleTypeDef *huart)写接收函数;

在函数中先if判断串口,定义的uint8_t rec_data;在headfile.h中加一个外部声明extern,便于数据跨文件使用

找到串口接收函数HAL_UART_Receive_IT();

第一个参数为串口句柄

第二个参数为接收的数据

第三个参数接收数据的字节数

**写好的接收函数要在main中声明,**相当于使能,代码执行到此时发生串口中断,把数据存到rec-data中然后跳到串口中断函数中

在函数中将刚才储存的数据发送出去后又接收新的数据,这也就是为什么接收函数中发送数据的代码要在接收代码上面

八.灯

题目要求灯的亮灭有时间要求,这就需要去配置一个0.1s的定时器,定时器记得使能中断后生成代码

九.PWM输出功能(不熟)

输出PWM

PA1配置为PWM输出,计算f'为2000hz**,不需要开启中断**

生成代码,开启PWM,设置占空比

输入捕获

还需要一个引脚来捕获频率,这个题目没有要求。但是我们需要用来查看自己的PWM和占空比是否正确**,输入捕获是需要用中断的**

生成代码,开启

找到回调函数写输入捕获函数

void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim);

占空比计算的时候,如果输出用%d,CCR/ARR是的小数的,这个输出是会出错的,CCR*100再除

相关推荐
天月风沙2 小时前
PX4 | 无人机关闭磁力计罗盘飞行(yaw estimate error报错解决方法)
单片机·嵌入式硬件·mcu·无人机
独行soc4 小时前
2025年渗透测试面试题总结-腾讯[实习]玄武实验室-安全工程师(题目+回答)
linux·安全·web安全·面试·职场和发展·渗透测试·区块链
·云扬·6 小时前
【PmHub面试篇】Gateway全局过滤器统计接口调用耗时面试要点解析
面试·职场和发展·gateway
想搞嵌入式的小白6 小时前
STM32 NVIC中断控制器
stm32·单片机·嵌入式硬件·nvic
深圳市尚想信息技术有限公司7 小时前
【深尚想】OPA855QDSGRQ1运算放大器IC德州仪器TI汽车级高速8GHz增益带宽的全面解析
单片机·嵌入式硬件
代码总长两年半8 小时前
STM32----IAP远程升级
stm32·单片机·嵌入式硬件
广药门徒8 小时前
STM32手册上标称的18MHz GPIO翻转速度和你实际测量到的速度之间的差异是预期之内且合理的
单片机·嵌入式硬件
广药门徒8 小时前
在使用一些不用驱动大电流的设备就可以用stm32的自己的上下拉但是本身上下拉不就是给iicspi这些他通信给信号的吗中怎么还跟驱动能力扯上了有什么场景嘛
stm32·单片机·fpga开发
半桔10 小时前
【算法深练】分组循环:“分”出条理,化繁为简
数据结构·c++·算法·leetcode·面试·职场和发展
·云扬·12 小时前
【PmHub面试篇】PmHub 整合 TransmittableThreadLocal(TTL)缓存用户数据面试专题解析
缓存·面试·职场和发展