【IoT】学习嵌入式微控制器究竟是在学什么
控制微控制器本质上是在控制微控制器的引脚以何种方式对高低电平的输出或接收
而控制引脚是要对微控制器中的功能寄存器进行配置。在51单片机中需要手动配置特殊功能寄存器,在开发STM32时,我们有大量的官方库已经为我们封装了相关内容,还提供了CubeMX等图形化配置软件,极大地便利了开发者,提高了应用开发速度。
一、了解GPIO引脚
STM32芯片的IO有8中模式(四种输入模式 + 四种输出模式):
(1)GPIO_Mode_AIN 模拟输入
(2)GPIO_Mode_IN_FLOATING 浮空输入
(3)GPIO_Mode_IPD 下拉输入
(4)GPIO_Mode_IPU 上拉输入
(5)GPIO_Mode_Out_OD 开漏输出
(6)GPIO_Mode_Out_PP 推挽输出
(7)GPIO_Mode_AF_OD 复用开漏输出
(8)GPIO_Mode_AF_PP 复用推挽输出
GPIO硬件结构图
引脚结构体
初始化例程
关于什么情况下需要开漏输出、什么时候上下拉
,会在其他笔记中谈到
二、万物始于点灯
在按下某个按钮后,管推挽输出高电平(根据手册中硬件情况决定高低电平)使某发光二极管发亮,这就是数字电路中组合逻辑的功能,虽然很简单,但是这是最基础的编程思想。当需要设置很多寄存器对引脚进行初始化处理,才能使引脚具备有数字输入和输出输出功能。每使用微控制器的一个功能,就要对控制该功能的寄存器进行设置。
三、定时器的使用
学会定时器的使用,就可以用微控制器实现时序电路,时序电路的功能是强大的,在工业、家用电气设备的控制中有很多应用,例如,可以用微控制器实现某发光二极管亮灭控制,该开关在按钮按下一次后,灯亮3分钟后自动灭,当按钮连续按下两次后,灯常亮不灭,当按钮按下时间超过2s,则灯灭。
数字集成电路可以实现时序电路,定时器的使用是非常重要的,逻辑加时间控制是微控制器使用的基础。
此时可以接触MultiTimer等软件定时器,这是一个软件定时器扩展模块,可无限扩展你所需的定时器任务,取代传统的标志位判断方式, 更优雅更便捷地管理程序的时间触发时序。源代码写得非常精彩,比如结构体里面塞进函数地址,实现按时执行回调函数的代码。
四、中断
微控制器的特点是一段程序反复执行,程序中的每个指令的执行都需要一定的执行时间,如果程序没有执行到某指令,则该指令的动作就不会发生,这样就会耽误很多快速发生的事情,例如,按钮按下时的下降沿。
要使微控制器在程序正常运行过程中,对快速动作做出反应,就必须使用微控制器的中断功能,该功能就是在快速动作发生后,微控制器中断正常运行的程序,处理快速发生的动作,处理完成后,在返回执行正常的程序。
中断功能使用是需要设置哪些寄存器才能使某种中断起作用,中断开始时,程序应该干什么,中断完成后,程序应该干什么,需要精确地知道什么时候不允许中断发生(屏蔽中断)、什么时候允许中断发生(开中断),等等。
中断学会后,就可以编制更复杂结构的程序,这样的程序可以干着一件事,监视着一件事,一旦监视的事情发生,就中断正在干的事情,处理监视的事情,当然也可以监视多个事情,形象的比喻,中断功能使微控制器具有吃着碗里的,看着锅里的功能。
五、ADC转换
ADC全称 Analog-to-Digital Converter,即模拟-数字转换器,可以将连续变化的模拟信号转换为离散的数字信号,进而使用数字电路进行处理,称之为数字信号处理。
例如STM32L431xx 系列有 1 个 ADC,ADC 分辨率高达 12 位,每个 ADC 具有多达 20 个的采集通道,这些通道的 A/D 转换可以单次、连续、扫描或间断模式执行。 ADC 的结果可以左对齐或右对齐方式存储在 16 位数据寄存器中。
通过这些A/D转换器可以使微控制器操作模拟量,显示和检测电压、电流等信号。学习时注意模拟地与数字地、参考电压、采样时间,转换速率,转换误差等概念。使用A/D转换功能的简单的例子是设计一个电压表,或者在小熊派上使用ADC读取气体传感器数据(MQ-2)
六、SPI、I2C接口和液晶显示器接口
这些接口的使用可以使微控制器更容易连接外部设备,在扩展微控制器功能方面非常重要。
七、比较、捕捉、PWM功能
这些功能可以使微控制器能够以视觉暂留效果平滑地改变灯亮度、控制电机,检测转速信号,实现电机调速器等控制功能。
八、USB接口、TCP/IP接口、各种工业总线的硬件与软件设计。
学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计是非常重要的,因为这是当前产品开发的发展方向。
九、使用RTOS(例如华为LiteOS)
随着项目产品需求越来越复杂(项目可能涉及到传感器数据读取、无线数据上传与接收、UI实时刷新、算法处理、OTA刷新固件等等),传统状态机或者事件驱动的方式无法满足完成项目的开发需求时,使用RTOS的多任务就可以解决对应的问题,它既能让项目开发起来思路清晰,方便易维护;同时RTOS也能保证整个产品运行的实时性。
以上部分图片来自STM32F1中文版参考手册
- 点赞
- 收藏
- 关注作者
评论(0)