蓝桥杯嵌入式备赛笔记(基于b站up主“我的代码没问题”视频)方便自己赛前复习

1、库文件

比赛时不能上网 只能使用官方提供的库文件包

在CubeMX的Project Manager里将 “Use Defult Firmwave Location” 取消勾选

并点击下方Browse 确定官方提供的库文件位置(比赛时将库文件解压然后放进自己的工程文件中

2、基本配置

一、选择外部高速时钟

二、Debug设为串口
三、时钟配置

四、第一次打开 如果之前mdk没用过这个芯片需要安装芯片的pack包

五、headfile文件

3、LED(亮LED灯、亮LCD屏的代码)

LED:PC8-PC15 低电平点亮

U1:锁存器 PD2高电平1时 数据才会传输  PD2低电平0时 数据 不会传输

LED配置 默认为高电平

点灯的操作流程:先将PD2置高电平 再将相应灯的gpio拉低

4、按键

需要配置成上拉输入 按键没有按下时为高电平;按键按下后为低电平

按键扫描函数

按键扫描理解: 1、 初始时,若读取到按键按下,将读取到的‘0’值存到B1state 这时满足第一个判断语句:B1state=0  B1 last_state=1 表示按键按下  将定时器的计数器CNT清零 定时器开始计时,并将B1state的值给B1 last_state 即B1state=B1 last_state=0  ;

                        2、当第二次(或者更多次)进入到这个函数后,若按键还没松开,此时保持B1state=B1 last_state=0,表示按键一直按着 ;

                        3、只有等到按键松开后,B1state=1而B1 last_state=0,才会进入到第三个判断语句,表示按键松开

定时器三作用的理解:首先在CubeMX中总线时钟是配置为80M,定时器3预分频器的值为8000-1;不难计算出定时器每隔1/10000s产生一次计数,当CNT的值记到10000时,表示定时器计时了1秒;

补充:这里的定时器三没有使用中断功能,但是也要在初始化后使能(区别于定时器2:有中断的使能)。

5、LCD显示

一、这里有三个关于LCD的几个文件 需要放到自己的工程里,比赛的时候不要忘了!!!

第一个是lcd.c文件 文件路径:嵌入式资源数据包_STM32G4_2023\嵌入式资源数据包_STM32G4_2023\竞赛平台\6-液晶驱动参考程序\MDK5_LCD_HAL\Src

另外两个是fonts.hlcd.h文件 文件路径:嵌入式资源数据包_STM32G4_2023\嵌入式资源数据包_STM32G4_2023\竞赛平台\6-液晶驱动参考程序\MDK5_LCD_HAL\Inc

二、LCD初始化 及 LED和LCD引脚冲突问题

LCD初始化要放在GPIO初始化之后!!!

LCD初始化前将PD2置低电平,这是因为在GPIO初始化的时候先将PD2端置1 才配置LED都为高电平熄灭 但是没有将PD2置回低电平 这时锁存器是打开的  而LCD和LED有共用引脚  所以导致这后面LCD的函数会改变LED的状态。

否则会导致LCD显示的时候LED灯全都被点亮。

另外 led_show函数 和 lcd_show函数如果同时放在主函数里也会导致引脚冲突问题,因此还需在与LCD有关的函数中做如下操作:

三、LCD显示和高亮LCD

6、定时器

一、利用定时器2实现LED灯闪烁

配置TIM2为1s中断 (时钟源:内部时钟  PSC:8000-1  ARR:10000-1)

注意:PSC的值不要超过65535

定时器中断

                                        ( 在回调函数里写定时器中断函数 )

                                           (不要忘记加上定时器中断使能函数

二、定时器2实现PWM波输出

CunbeMX配置

赛题常见要求(举例):设置频率为1000HZ 占空比为50%

用到的频率计算公式:

占空比计算公式:      CCR/ARR+1

三、定时器17实现输入捕获

(1)CunbeMX配置

(2)初始化配置

                                                        (开启定时器 使能输入捕获的中断)

(3)中断函数(回调函数)

                                                        (在输入捕获的回调函数中计算频率)

每次上升沿都会进入中断读取CNT(CCR)的值 再计算输入捕获频率

输入捕获频率计算公式:

这里Fsys=80000000  PSC配置为80-1  capture_value实际上就是CCR(CNT)的值

四、输入捕获测量555定时器的输出频率

(1)CunbeMX配置

TIM2:在Channel1选择输入捕获模式;PSC配置为80-1; 使能一下中断

TIM16同理;

(2)初始化设置

(3)中断函数

7、ADC(模数转换)

一、CubeMX配置

二、ADC读取函数(包含转换成电压值公式)

8、USART

一、CubeMX配置(注意GPIO为PA9和PA10)

二、串口向上位机发送字符串

三、串口接收一个数据然后发送(分三步走)

第一次先在while()前面接收一次数据,然后进入中断发送数据、接着进行下一次接收;后面就可以一直在中断中循环接收和发送。

四、利用定时器进行串口不定长数据接收

这个实验的功能只是一次接收多个字节数据,不能发送数据;定时器在里面起到的作用是在最后一次接收数据时,判断CNT的值是否大于15,大于15代表最后一次数据接收完成;

(1)CubeMX配置

(2)初始化配置

(3)串口接收中断

(4)串口接收数据处理函数

9、EEPROM读写

官方会提供i2c的.c和.h文件 需要拷贝到工程目录下

一、eeprom读写函数(基于AT24C02)

10、RTC时钟

一、CubeMX配置

二、读取时间值 并在闹钟时间到后亮灯

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值