蓝桥杯电子类嵌入式第十届省赛

一、硬件设计

模拟输出原理图

在这里插入图片描述

LED灯原理图

在这里插入图片描述

LCD原理图

在这里插入图片描述

按键原理图

在这里插入图片描述

所用引脚

LCD引脚:
PC0~PC7 --------- LCD_D0~D7 数据低8位
PC8~PC15 --------- LCD_D8~D15 数据高8位
PA8 --------- LCD_RD 读选通
PB5 --------- LCD_WR 写选通
PB8 --------- LCD_RS 寄存器选择
PB9 --------- LCD_CS 片选

LED灯引脚:PC8~PC15 (分别对应G4板上LED灯的LD1~LD8)

PD2:连接锁存器

按键引脚:
PA0 --------- B4(按键4)
PB0~PB2:分别对应按键1 — 按键3 即B1、B2、B3

二、STM32CubeMX配置

1、选择时钟源

外部高速时钟源(HSE)选择crystal/ceramic resonator(晶体/陶瓷晶振)。如图1.1所示
在这里插入图片描述

                                            图1.1

2、设置时钟频率

2.1 选择外部晶振8M
2.2 HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接
外部时钟源,频率范围为4MHz~48MHz。本次选择了8M
2.3 系统时钟SYSCLK(一般SYSCLK=PLLCLK=80MHz)
2.4 在HCLK(AHB总线时钟)一栏输入80,回车即可。如图2.1所示。
在这里插入图片描述

                                            图2.1

3、设置GPIO

注:“所有引脚采用默认设置” 即在右边的“Pinout view”界面设置完成后不用在“GPIO Mode and Configuration”界面更改GPIO的设置。如图3.1和3.2所示。
在这里插入图片描述

                                          图3.1

在这里插入图片描述

                                          图3.2             

LCD引脚:
“所有引脚采用默认设置”
GPIO输出电平:低电平
GPIO模式:推挽输出
GPIO上下拉:无上下拉
GPIO最大输出速度:低速
用户自定义标签:自己根据需求设置
例如:PA8设置如图3.3所示。
在这里插入图片描述

                                          图3.3

LED引脚:
所有引脚采用默认设置 同LCD
用户自定义标签:设置了PD2(LED锁存器)的别名为LEDLOCK

按键引脚B1~B4:
“所有引脚采用默认设置”
GPIO模式:输入
GPIO上下拉:无上下拉
用户自定义标签:设置了按键的别名为KEY1~KEY4

模拟输入R37:
GPIO模式:模拟输入
GPIO上下拉:无上下拉

4、设置ADC

1、勾选“IN15 Single-ended”(single-ended是单端信号)。如图4.1所示。
在这里插入图片描述

                                          图4.1

选择后PB15的ADC2_IN15(ADC2的通道15)变成绿色(即表示选用成功)。如图4.2所示。
在这里插入图片描述

                                          图4.2

可在图4.3中设置ADC2的参数。
在这里插入图片描述

                                          图4.3

5、设置TIM

5.1 预分频系数(Prescaler)设置为1599
5.2 主计数器(Counter Period)设置为9999

知识补充:
a. APB2负责AD,I/O,高级TIM,串口1。
APB1负责DA,USB,SPI,I2C,CAN,串口2345,普通TIM
TIM1是高级定时器,包括了基本定时器和通用定时器的所有功能。

b. HZ是赫兹,频率单位,1MHZ(兆赫)=1000KHZ(千赫)=1000000HZ

c. 定时器发生中断时间的计算方法:
定时时间 = (Prescaler+1 ) X (Counter Period+1) X 1/ 定时器时钟频率(信号的周期)
时钟信号1KHz,Prescaler为9,Counter Period为999,定时时间?
定时时间=10x1000x1/1000=1000=10s=10000ms

因此为了满足题意“以0.2s为间隔闪烁”,可将Prescaler设置为1599,Counter Period设置为9999。定时时间=1600x10000x1/80000000=0.2s
当然Prescaler和Counter Period的值可以改成其他数值,满足题意并且可实现就行。
由图5.1可知, 定时器时钟频率为80MHZ,即80000000HZ

在这里插入图片描述

                                          图5.1

5.3 设置TIM中断
勾选“TIM1 update interrupt and TIM16 global interrupt”,即选用TIM1的更新中断和TIM16的全局中断。如图5.2所示。
在这里插入图片描述

                                          图5.2

6、工程管理设置

6.1 自己命名,如num101,表示蓝桥杯电子类嵌入式的第十届省赛题。如图6.1所示。
6.2 选择对应的IDE,如MDK-ARM。如图6.1所示。
在这里插入图片描述

                                          图6.1

6.3 代码生成一栏,勾选图中的“Generate peripheral initialization as a pair of '.c/.h files per peripheral”,即单独生成对应外设的.c和.h文件。如图6.2所示。
在这里插入图片描述

                                          图6.2

7、生成代码

点击右上角的“构建代码”。如图7.1所示。
在这里插入图片描述

                                          图7.1

三、添加LCD相关文件到工程中

1、将fonts.h和lcd.h添加到如下工程的文件夹中。如图1.1所示。
在这里插入图片描述

                                          图1.1

注:inc文件夹一般放.h文件

1、将lcd.c添加到如下工程的文件夹中。如图2.1所示。
在这里插入图片描述

                                          图2.1

四、Keil MDK 5配置

4.1 添加文件路径

注:(本次可省略添加文件路径的步骤,因为原工程已经添加了含有LCD相关文件的路径,以后要添加其他文件,一定要记得添加文件路径)
1、打开Keil5,点击魔术棒。如图1.1所示。在这里插入图片描述

                                          图1.1

2、点击“C/C++”。如图2.1所示。
在这里插入图片描述

                                          图2.1

3、点击“Include Paths”一栏的三个点,再点击“带黄色的图标”来添加路径。如图3.1所示。
在这里插入图片描述

                                          图3.1

4.2 设置Debug

按图中的配置。
在这里插入图片描述

4.3 添加文件到工程中

1、右击“User/Core”,点击“Manage Project Items…”。如图1.1所示。
在这里插入图片描述

                                          图1.1

2、点击“User/Core”那一栏,点击右下角的“Add Files…”。如图2.1所示。
在这里插入图片描述

                                          图2.1

3、找到lcd.c文件,点击一次“Add”即可(点击多次会重复添加,编译会报错)。如图3.1所示。
注:尽量选用“All files”来显示文件,不然有的文件存在但是看不到,如.s后缀的文件
在这里插入图片描述

                                          图3.1

4、添加成功后,点击“OK”即可。
在这里插入图片描述

五、软件设计

网友代码下载

猜你喜欢

转载自blog.csdn.net/qq_44250317/article/details/114884575