5、TIM定时器中断
4、EXTI外部中断一、中断中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行
中断优先级:当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓急进行裁决,优先相应更加紧急的中断源
中断嵌套:当一个中断程序正在运行时,又有新的更高优先级的中断源申请中断,CPU再次暂停当前中断程序,转而去处理新的中断程序,处理完成后依次进行返回
中断响应:申请中断,让CPU执行中断函数
事件响应:触发一个事件,则中断信号不会通向CPU,而是通向其他外设的操作,例如触发ADC转换、触发DMA等(stm32对外部中断增加的额外的功能)(也就是不会触发中断,而是触发外设操作)
使用中断系统可以加大的提高程序的运行效率,如果没有中断系统,为了防止外部中断被忽略或者串口数据被覆盖,主程序就只能不断地查询是否有这些事件发生。
比如如果没有定时器中断,主程序只能使用delay函数,才能实现定时的功能。
有了中断系统后,主程序就可以放心执行其他事情,有中断的时候再去处理。
对于STM32来说,想要获取的信号是 ...
3、OLED显示屏
3、OLED显示屏一、OLED简介
OLED(Organic Light Emitting Diode):有机发光二极管
OLED显示屏:性能优异的新型显示器,具有功耗低,相应速度快、宽视角、轻薄柔韧等特点
0.96寸OLED模块:小巧玲珑、占用接口少,简单易用,是电子设计中非常常见的显示屏模块
供电:3~5.5V,通信协议I2C/SPI,分辨率:128*64
二、OLED硬件电路4引脚OLED
SCL和SDA是I2C通信引脚,需要接在I2C通信的引脚上
实验中用的模块是GPIO口模拟的I2C通信,故SCL和SDA两个端口可以接在任意的GPIO口上
7引脚OLED
右边5个引脚是SPI通信协议的引脚
如果是GPIO口模拟的通信协议,也是接在任意的GPIO口上即可。
三、OLED驱动函函数简介和应用
四、用keil进行调试(1)先编译
(2)点击放大镜,进入调试模式
3、进入后的界面
五、OLED显示屏的代码1、主函数1234567891011121314151617181920#include "stm32f10x.h" ...
2、GPIO通用输入输出口
2、GPIO通用输入输出口一、GPIO简介
GPIO ( General Purpose Input Output )通用输入输出口
可配置为 8 种输入输出模式
引脚电平: 0V~3.3V ,部分引脚可容忍 5V
输出模式下可控制端口输出高低电平,用以驱动 LED 、控制蜂鸣器、模拟通信协议输出时序等
输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、 ADC 电压采集、模拟通信协议接收数据等
二、STM32 GPIO模式:当使用STM32系列微控制器的GPIO引脚时,您可以根据您的应用需求选择不同的GPIO模式。以下是对每个模式的更详细介绍:
输入模式:
浮空输入(Floating Input):引脚未连接到任何电路。可以用于读取外部电平,但应注意,由于没有上拉或下拉电阻,引脚可能会受到噪声干扰。
上拉输入(Input Pull-Up):引脚通过内部上拉电阻连接到高电平。在没有外部连接时,引脚会保持高电平。通常用于按钮和开关的输入,以防止悬空电平。
下拉输入(Input Pull-Down):引脚通过内部下拉电阻连接到低电平。在没有外部连接时,引 ...
1、STM32F103C8T6简介
1、STM32F103C8T6简介STM32F103C8T6是STMicroelectronics(意法半导体)推出的一款STM32系列微控制器(MCU)的型号。这款微控制器基于ARM Cortex-M3内核,并具有丰富的外设和功能,适用于各种嵌入式系统和应用。
以下是关于STM32F103C8T6微控制器的一些主要特征和规格:
处理器核心:
ARM Cortex-M3内核,工作频率通常为72 MHz。
闪存和RAM:
64KB Flash存储器:用于程序存储。
20KB SRAM:用于数据存储。
GPIO引脚:
支持多个GPIO引脚,可以配置为不同的输入/输出模式,包括浮空输入、上拉/下拉输入、推挽输出、开漏输出等。
通信接口:
USART/UART:用于串口通信。
SPI:用于串行外设接口。
I2C:用于两线制串行通信。
CAN:用于控制器局域网通信。
定时器:
通用定时器:支持多个通用定时器,可用于生成脉冲、计时和PWM输出。
基本定时器:支持基本定时器功能。
看门狗定时器:用于系统复位和监视。
ADC:
内置模数转换器(ADC):用于模拟信号采 ...
第2章 单片机程序设计模式
第2章 单片机程序设计模式本章目标
理解裸机程序设计模式
了解多任务系统中程序设计的不同
2.1 裸机程序设计模式裸机程序的设计模式可以分为:轮询、前后台、定时器驱动、基于状态机。前面三种方法都无法解决一个问题:假设有A、B两个都很耗时的函数,无法降低它们相互之间的影响。第4种方法可以解决这个问题,但是实践起来有难度。
假设一位职场妈妈需要同时解决2个问题:给小孩喂饭、回复工作信息,场景如图所示,后面将会演示各类模式下如何写程序:
2.1.1 轮询模式示例代码如下:
123456789// 经典单片机程序: 轮询void main(){ while (1) { 喂一口饭(); 回一个信息(); }}
在main函数中是一个while循环,里面依次调用2个函数,这两个函数相互之间有影响:如果“喂一口饭”太花时间,就会导致迟迟无法“回一个信息”;如果“回一个信息”太花时间,就会导致迟迟无法“喂下一口饭”。
使用轮询模式编写程序看起来很简单,但是要求while循环里调用到的函数要执行得非常快,在复杂 ...
第3章 搭建开发环境安装
第3章 搭建开发环境安装3.1 安装Keil MDK3.1.1 软件下载开发板配套资料里有Keil MDK软件包:
也可以(但是不建议)在Keil官网(https://www.keil.com/download/product/)直接下载“MDK-Arm”,如图所示:
3.1.2 软件安装双击运行“MDK532.EXE”,进入安装界面,选择“Next >>”,如图所示:
接着进入用户协议界面,勾选同意协议,点击“Next >>”,如图所示:
然后设置安装路径,第一个“Core”是软件的安装路径,第二个“Pack”是芯片的硬件支持包的安装路径,读者保持默认路径或者设置为如下图图所示一样的即可,如果是自定义设置,建议为全英文路径,不建议为包含有中文的路径。选择好之后点击“Next >>”后:
随后需要设置个人信息,随便填写即可,如图所示:
之后便进入安装进度界面,如下图所示,等待安装完成。
安装过程中,回弹出驱动安装界面,勾选“始终信任来自‘ARM Ltd’的软件”,然后点击“安装”,如下图所示。
如下图所示 ...