蓝桥杯嵌入式
文章平均质量分 77
Tkpluto
想把写博文当成记笔记的小白博主
展开
-
【速成】蓝桥杯嵌入式省一教程
蓝桥杯虽然是水赛,含金量不如其他老牌竞赛那么高,但对提高自身的能力还是有一定帮助的。无论你是想混个奖项加加综测分,还是想学学单片机、嵌入式的知识,蓝桥杯电子类的嵌入式竞赛都值得参加一次。当然蓝桥杯电子类竞赛还有其他组别,嵌入式组主要考察的是STM32的基本使用,而单片机组考察的是CT107D单片机(博主也没听过,貌似是蓝桥杯竞赛专用板)。我个人认为无论是入门单片机,还是入门嵌入式,又或者是为今后做项目、实习工作等做准备,STM32都是非常值得学的,也非常适合入门。原创 2024-01-16 17:57:02 · 2161 阅读 · 3 评论 -
【速成】蓝桥杯嵌入式省一教程:(十一)UART串口通信
一个单片机通常内置有多个UART,而这些UART通常都与单片机上的USB接口连接在一起,因此只需要将单片机通过数据线与电脑相连,即可实现单片机与电脑的UART串口通信。首先选择USART1/2/3/UART4中的任意一个(USART与UART的区别是USART可以进行同步通信,UART只能进行异步通信),将Mode设置为Asynchronous(异步),将Baud Rate(波特率)设置为9600。想要验证程序的正确与否,只需要将接收到的数据通过串口再发送出去,或使用LCD显示出来即可。原创 2023-08-25 10:33:16 · 2460 阅读 · 10 评论 -
【速成】蓝桥杯嵌入式省一教程:(十)利用共用体进行E2PROM读写
这样,val变量就以4个字节的形式,存储在了val_write这一共用体中,其中value的值为0.5,data[0]~data[3]分别为其4个字节。若是对于uint16_t类型的数据,我们可以利用移位操作,将其拆成高八位与低八位存进E2PROM的两个地址中;然而,对于占用字节数更多的数据类型,或占用字节数未知,用这样的办法处理起来就显得较麻烦。在上一节中我们了解到,AT24C02芯片(E2PROM存储器)内部含有256个8位字节,,对于int、float型等大于占用一个字节的数据,需要进行额外处理。原创 2023-08-24 10:05:17 · 973 阅读 · 0 评论 -
【速成】蓝桥杯嵌入式省一教程:(九)AT24C02芯片(E2PROM存储器)读写操作与I2C协议
R(Read)为1,W(Write)为0。原创 2023-08-23 10:25:50 · 4076 阅读 · 6 评论 -
【速成】蓝桥杯嵌入式省一教程:(八)ADC测量模拟电压
ADC(Analog to Digital Converter),模拟数字转换器,是电子工程师必须掌握的一个内容。由于单片机、计算机等是由0和1组成的,因此其无法直接测量或使用连续的模拟信号,需要用ADC将模拟信号转换为离散的数字信号。ADC的具体原理在此处不做展开,我们需要知道的是,因此,若想要使用ADC测量外界某一量程范围内的电压值,只需要将其输入至ADC的通道,读取ADC的输出值,再用输出值公式反向计算输入电压即可。在圆圈处可以看到,此ADC的分辨率为12位,即它的最大输出为4095。原创 2023-08-22 10:38:34 · 1493 阅读 · 0 评论 -
【速成】蓝桥杯嵌入式省一教程:(七)定时器输入捕获中断与PWM频率占空比测量
在掌握了这几个概念之后,大家在阅读前几节时对定时器的疑问应该就可以尽数消除。同样,为了提高测量频率的精度,我们将预分频系数设置得尽可能小,计数周期设置得尽可能大。随后,打开定时器中断开关。前文已经讲述过定时器的两个用法:基本定时中断与PWM输出。若要测量占空比,则需要在测量频率的基础上,使用另一个通道作为间接输入,并设置为下降沿捕获。可见PA7引脚同时作为多个定时器的通道,在这里我们选择TIM3的CH2通道。在此之前,需要解释一下前文一直出现过的与定时器有关的概念。这样,我们就完成了在Cube中的设置。原创 2023-08-21 18:09:18 · 4081 阅读 · 11 评论 -
【速成】蓝桥杯嵌入式省一教程:(六)PWM输出
定时器除了用于最基本的定时器计时中断以外,还可以用于输出PWM(Pulse Width Modulation)波,即脉冲宽度调制波形,也就是频率与占空比均可改变的矩形波。考虑到题目要求在5s内均匀升高或降低频率,而我们是通过改变重装载值的方式来改变频率的,为方便计算,我们通常将重装载值设置为100-1(或200-1),这样比较值(或Pulse)的值(或除以2)即为PWM波的占空比。)为80,000,000/(100*200)=4kHz,而所得PWM波的频率与定时器频率一致,为4kHz。原创 2023-08-20 13:07:55 · 3552 阅读 · 7 评论 -
【速成】蓝桥杯嵌入式省一教程:(五)用按键和屏幕实现嵌入式交互系统
在前四节中,我们已经讲解了LED、LCD和按键,用这三者就能够实现一个人机交互系统,也即搭建整个嵌入式系统的框架。因此,尽管你什么都不会,只会使用LED、LCD和按键,也至少能获得省三或省二的奖项。B2的要求相对于B1来说,只是增加了不同界面的不同功能,其本质是一样的。注意,第二个小要求需要切换选择参数,这就需要一个标志变量。结合要求2,当choose=='R'时,对R进行++;要求4的第1个要求与要求3类似,不再赘述。将所有有关LED、LCD与按键的操作封装成函数,在主循环中调用,即可实现一个交互系统。原创 2023-08-19 18:24:23 · 3829 阅读 · 7 评论 -
【速成】蓝桥杯嵌入式省一教程:(四)按键短按、长按与双击
此外,短按、长按和双击涉及到按键的时间长短问题,因此我们需要利用定时器的基本计时功能来计算按键按下的长短。因此,大体可以敲定代码的框架:利用0.01s的定时器中断扫描按键,并在按下按键时开始计时,以区分长短按;然而,由于按键有限,在现实生活中,仅靠几个按键当然无法完成很多指令,于是人们想到了通过一个按键的短按、长按与双击来区分不同的指令,这也是蓝桥杯的考点之一。在这里,我们设置了0.01s的中断周期,因此当按下按键时,在第二次进入定时器中断时,其电平状态就能稳定下来,故需要定义一个变量。原创 2023-08-18 10:12:52 · 5401 阅读 · 24 评论 -
【速成】蓝桥杯嵌入式省一教程:(三)按键扫描与定时器中断
这样,每当时间过去了0.01s,CPU就会进入定时中断回调函数中,运行我们预先写好的中断程序(在此处是读取按键端口的电平,随后执行相应任务),即定时按键扫描,而不是一直循环扫描按键是否按下,这样就为CPU节省下了大量的时间,大大提高了程序的运行效率。在点亮LED时,我们已经使用了GPIO输出模式,在按键识别中,我们将要使用GPIO输入模式。正如打断我们的有可能是电话铃声,有可能是门铃声,也有可能是短信铃声等等,打断CPU的中断方式也是多种多样的,如GPIO外部中断、定时器中断、定时器捕获中断等等……原创 2023-08-17 15:41:39 · 2070 阅读 · 3 评论 -
【速成】蓝桥杯嵌入式省一教程:(二)LCD显示
在嵌入式开发中,屏幕显示是一个非常重要的功能。然而,在蓝桥杯中,比赛方已经为我们提供了与LCD有关的库,这让我们能够简单方便地使用LCD屏幕。如果想要将某变量的值实时显示在LCD屏幕上,就要通过sprintf函数将变量赋值到一个字符串数组中,再通过LCD_DisplayStringLine函数该字符串数组。通过调用lcd.c(在Src文件夹中)、lcd.h、fonts.h(在Inc文件夹中),就可以方便地使用LCD屏幕进行显示。这样就能在LCD屏幕上以指定的背景及字体颜色在第一行显示。原创 2023-08-16 23:08:58 · 3547 阅读 · 7 评论 -
【速成】蓝桥杯嵌入式省一教程:(一)点亮LED
在点亮LED前,我们需要先了解一个重要概念——GPIO(General Purpose Input Output),即通用输入输出端口。可以看到,STM32G431RBT6是通过控制PC8~PC15以及PD2的电平状态来控制LED的亮灭的。如同所有编程入门的第一个教程——打印"Hello world"一样,点亮LED可以算得上是嵌入式开发中的"Hello world",所有的单片机开发入门都从这里开始。另外,LED操作中还使用到了一个非常常用的函数——延时函数,它是以ms为单位进行延时的。原创 2023-08-15 19:14:54 · 1974 阅读 · 5 评论