【STM32】4.核心板的电路原理与驱动编程

课时1.核心板电路分析

1.1核心板元器件分解电路图

 

 

课时2.点亮LED灯

2.1先玩一玩LED灯的示例程序

切换一下1或2号LED灯,通过0或1来控制一下亮灭,通过延时来控制一下闪烁频率。

了解了这3要素之后,再去研究LED控制程序。

2.2LED初始化

所有IO端口在使用之前必须初始化,初始化的内容包括

(1)是IN还是OUT

(2)端口号是多少

(3)如果是输出,输出的速率是多大

初始化程序如下:

 

各行含义如下:

(1)GPIO初始化参数的结构体声明,结构体内容包括端口号、速度和模式;

(2)在时钟层面上启动IO端口,GPIO是连接到APB2高速总线上的,所以要在APB2高速总线上启动一些功能。指令中启动了GPIOA、GPIOB和GPIOC

(3)3~4行设置了GPIO的端口号、速度和模式,其中

LED1和LED2是对GPIO_Pin_0和GPIO_Pin_1的宏定义以便修改维护,这里指定了LED1和LED2而其他GPIO不会被设置,

输入输出模式设置为Out_PP推挽输出模式(大电流),

只有输出模式时需要设置的速度设置为50MHz

(4)运行GPIO的初始化库函数,第一个参数LEDPORT是对GPIOB的宏定义(PB组),第二个参数是上面设定的结构体

2.3LED设置

使用了库函数GPIO_WriteBit

输入三个参数:(1)哪一组端口(2)端口号(3)输出状态是置位还是清零,用的是BitAction枚举

2.4对GPIO的操作方式

按bit读写、按16bit一组进行读写、直接写0x

宏定义的层层封装

 2.5呼吸灯

在一个宽度为n毫秒的时间内,亮的时长从1迭代到n,而灭的时常从n迭代到1,这样就是一个渐亮的过程;到达最亮后,反过来就是渐灭的过程。

 

课时3.读取GPIO

3.1读取按键,控制LED

 注意Key1和Key2是接到PA组的

3.2读取按键,锁存控制LED

读到按键信号时,取反当前输出状态即可,输出之后需要进入循环等待按键松开

 

课时4.Flash读取程序

4.1存储的分布

用户可以读写页0~页127,每次读写都是以页为单位进行,每页内存为1Kb

 

 4.2操作原则

 

课时5.蜂鸣器驱动程序

5.1有源和无源蜂鸣器

 

 5.2蜂鸣器工作逻辑

下图有误,蜂鸣器应该接在集电极上,以防干扰控制信号的幅值。

当PB5控制引脚为高电平时蜂鸣器不工作、为低电平时蜂鸣器工作。

通过控制PB5的PWM来控制蜂鸣器的声音。

 

 

 

 课时6.MIDI音乐播放程序

6.1MIDI音乐的组成

音调和时常,其中音调由频率控制

控制蜂鸣器按规律切换频率和时长,就能播放出MIDI音乐。参考示例程序。

 

课时7.USART驱动程序

7.1发送

USART有USART1、2、3这3个串口,分别有以下几种发送数据的方式:

(1)USART_SendData,一次只能发送一个字节;

(2)printf(格式化字符串),这里和stdio中的printf是不同的,而是STM32自带的串口打印函数,根据usart.h中的宏定义决定printf函数默认用USART几来输出;

(3)自定义的USART1_printf(格式化字符串),其实内部是使用方法(1)遍历输出字节,只是免去了方法2串口选择的麻烦;

7.2接收

首要问题是如何知道有数据发送过来,一种方式是查询寄存器的标志位,一种是通过中断响应函数被调用来知道。

7.3控制程序

所谓控制,就是明确在单片机一侧需要做的2方面事情,1是报告2是响应。

(1)报告,当单片机上有某信号发生时要从串口发送什么出去;

(2)是从串口收到某数据后要如何处理。

7.4小tip定义全局变量

在c中定义变量,在.h文件中将其声明为extern,则其他程序在引用该.h文件时就可使用该变量。

 

课时8.RTC原理与驱动程序

8.1RTC与后备寄存器

STM32的RTC是实时时钟,其驱动时钟有3个来源。

后备寄存器是当Vdd没有供电时,可以由Vbat供电来保存20个字节的用户应用程序。

RTC和后备寄存器不会被系统或电源复位源复位,当从待机模式唤醒时也不会被复位。

 

8.2如何记录时间

 8.3RTC驱动程序分析

(1)RTC的复位逻辑分为首次上电初始化和普通初始化。当第一次上电或后备电源掉电后,才需要首次上电初始化。

通过读取、判断备用寄存器的数值是否为之前设定的数值来判断RTC是否发生了掉电,从而决定不同的初始化逻辑。

(2)可以启动RTC的秒中断或闹钟中断。

(3)一些时间计算函数,照用即可。

 

 

课时9.RCC设置程序分析

9.1什么是RCC

时钟和复位程序的缩写。

可以设置单片机的时钟输入源、CPU各种总线的时钟频率。

9.2时钟树

SYSCLK左侧展示如何通过RCC的配置产生主频,右侧是如何使用主频。

 

 

posted @ 2022-11-26 14:15  啊原来是这样呀  阅读(413)  评论(0编辑  收藏  举报