一、编写环境
STM32开发的三种方式:
1、直接操作寄存器
大多数同学都是从51单片机学习过来的,其中使用了很多寄存器操作,但32和51不同,32使用的寄存器数量比51多了数十倍,如果在使用32过程中直接对寄存器操作就有点太过于繁琐不便了。但对寄存器的操作同样也是其他库的原理,这是脱不开的。
2、标准库
ST32系列拥有非常多的寄存器,这一定程度
导致了开发困难,为此ST公司就为芯片相同系列都编写了一份库文件,也就是工程文件里STM32F1x…之类的(其中x是可变的比如STM32F103C8T6和STM32F103ZET6都可以共用这个头文件)。在这些.c或.h文件中,包括一些常用量的宏定义,把一些外设也通过结构体变量封装起来,如GPO口时钟等。所以我们只需要配置结构体变量成员就可以修改外设的配置寄存器,从而选择不同的功能。
3、HAL库
HAL库是ST公司目前主力推的开发方式,全称就是Hardware Abstraction Layer(抽象印象层)。
ST推出HAL库最终目的就是缩短产品开发周期,降低企业的研发成本
HAL库优点:
1、简化开发流程
开发者不需要深入了解硬件底层细节,只需要调用HAL库提供的API函数就可实现底层硬件控制
2、提高代码复用性
由于HAL库提供了标准化的接口,可以方便地在不同的STM32系列芯片之间共享代码。
3、增强可移植性
由于HAL库是与设备无关的,开发人员可以将代码移植到不同的芯片平台上,而不需要重新编写底层硬件控制代码。
提供常用驱动程序和功能库:HAL库提供了一些常用的驱动程序和功能库,比如I2C、SPI、USART等,这些都可以大大减少开发时间和代码量。
HAL库优点:
1、增加代码复杂度
由于HAL库是一个大型的库,需要包含大量的代码,因此在使用时需要将库文件加入到工程中,这会增加代码的复杂度。
2、系统资源占用
由于HAL库是一个底层库,会占用一定的系统资源,因此在对系统资源要求较高的应用场景中,可能需要使用更为轻量级的库。
蓝桥杯嵌入式开发板
软件有STM32CubeMX、Keil-MDK以及使用Hal库编写
二、开发板介绍
1、外观
2、开发板资源
CT117E-M4 嵌入式竞赛训练板由以下功能模块组成:
● 处理器:STM32G431RBT6
● 4 个用户按键
● 8 个用户 LED
● 2.4 寸 TFT-LCD
● 1 个 RS232 串口(使用 UART-USB 转换)
● 1 个 EEPROM 芯片 24C02
● 1 个数字电位器芯片 MCP4017
● 2 个可调模拟输入
● 2 个可调脉冲输入
● 2 个扩展接口
● 1 个 USB 设备接口
● 板载 SWD 调试功能(USB 接口,无需外接调试器)
3、开发板设备连接关系
在上表中我们可以发现LCD屏幕与LED共用了一部分引脚(PC8-PC15)所以此时就需要使用到寄存器 我们后续再介绍
4、电路原理
(一)主控部分
主控为STM32G431RBT6
外部高速时钟频率24Mhz在STM32CubeMX中时钟配置时需要
其中包含RESET复位按键
(二)独立按键
独立按键B1-B4分别对应引脚PB0、PB1、PB2、PA0引脚
当按下开关时引脚接低电平。
(三)LED
R7-R16为限流电阻保护LED灯
LED灯为共阳极电路
SN74HC为锁存器,防止引脚冲突带来外设之间的干扰
PD2为锁存器的使能端口改变LED状态后要立即将锁存器开启后再关闭保证LED灯状态
PC8-PC15为LD1-8的控制引脚,拉低时LED灯亮
(四)LCD模块
LCD模块比赛时会给我们代码,我们只需要学会如何使用这些函数就行
(五)模拟输入
由两个可调电阻R37、R38与单片机PB5、PB12相连进行ADC采样
(六)可调脉冲输出
通过555电路调节R39、R40电阻从而调节脉冲宽度
(七)IIC
IIC通信
(八)额外引脚
后续部分将会持续更新。。。。。
第一次写文章还有许多问题,还请大家多多指点不是。qwq