合集-STM32单片机入门_嵌入式开发

摘要:前言 关于本文 本文是我为准备蓝桥杯嵌入式比赛时所作的,可以当作蓝桥杯的应试指南,系列中的标题含有“实验”的内容均在蓝桥杯开发板上运行 同时也增加了关于嵌入式与STM32的通用知识,其标题以“STM32的…”开头,让此文可以当作一般的STM32入门教程 本系列承接本人的STM8系列教程,因此一些在S 阅读全文
posted @ 2025-05-06 08:51 无术师 阅读(334) 评论(0) 推荐(0)
摘要:嵌入式系统的硬件组成 嵌入式处理器 嵌入式处理器是嵌入式系统的核心,其与外围电路配合组成了嵌入式系统 而嵌入式处理器可以分为以下几类: 微处理器MPU 属于CPU(中央处理器)的一个子集:大家都是PU(处理单元),区别在于CPU是广义的概念,一切计算机中的处理单元都称作CPU,而MPU特指用在微型计 阅读全文
posted @ 2025-05-06 09:02 无术师 阅读(447) 评论(0) 推荐(0)
摘要:软件开发模式 编程模式 嵌入式系统的软件开发,可以分为两种模式: 前后台系统 又称裸机编程,整个程序框架由一个死循环和若干中断服务程序组成 后台系统指一个无限循环,循环中调用各个相关函数完成所需操作;前台系统指各个中断服务函数,用于处理系统的异步事件和实时性要求较高的任务 比如一个发挥定时器功能的程 阅读全文
posted @ 2025-05-06 09:19 无术师 阅读(247) 评论(0) 推荐(0)
摘要:GPIO概述 GPIO的功能 输出功能 受控制输出高/低电平,从而控制外围设备 输入功能 读取引脚电平状态,从而获得外部信息输入 复用功能 作为片内外设的对外接口,例如作为串口通信的数据接收与发送引脚 时序模拟 通过改变引脚高低电平,模拟各种时序信号,比如后文将介绍的IIC通信 GPIO的工作模式 阅读全文
posted @ 2025-05-08 19:00 无术师 阅读(313) 评论(0) 推荐(0)
摘要:LED实验简介 LED实验原理 LED的连接 开发板上有8个LED灯,为共阳极连接,因此当对应连接的引脚输出高电平时LED熄灭,反之亮起 而为了节约引脚,开发板的LED阴极并未直接连接到单片机的引脚上,而是在期间增加了一个SN74HC573锁存器 锁存器的控制 当锁存器控制引脚LE(连接至PD2引脚 阅读全文
posted @ 2025-05-08 19:26 无术师 阅读(299) 评论(0) 推荐(0)
摘要:按键实验简介 按键实验原理 按键的硬件结构 蓝桥杯开发板上的按键默认为抬起状态,此时经上拉电阻接VDD,连接引脚状态为高电平;按下后线路导通接地,转变为低电平 检测按键的方法 使用查询法,不断读入按键相连GPIO输入状态,从而判断按键的状态 按键的GPIO引脚配置 按键的GPIO引脚连接 开发板有4 阅读全文
posted @ 2025-05-08 19:51 无术师 阅读(565) 评论(0) 推荐(0)
摘要:LCD简介 LCD显示原理 液晶显示原理 液晶在未加电场时透明,加电场后浑浊(无法反射所有光线从而显像) LCD显示器工作原理 把显示面板分为很多小栅格,每个格栅都由一个电极控制,通过改变电极就能控制格栅内液晶的排列,从而控制光路的导通 显然,像控制数码管一样亲自配置引脚去控制每一个电极是不现实的, 阅读全文
posted @ 2025-05-08 19:54 无术师 阅读(680) 评论(0) 推荐(0)
摘要:中断概述 数据传输方式 中断本质上是处理器与外部设备进行数据传输的一种方式,常见的数据传输方式有四种: 无条件方式 处理器不必了解外部设备的状态,直接进行传输,适用于简单的数据传输任务 查询方式 又称轮询法,处理器循环查询外部设备的状态,在外部设备就绪时才进行数据传输,我们在GPIO一节的三个实验: 阅读全文
posted @ 2025-05-08 20:43 无术师 阅读(1851) 评论(0) 推荐(0)
摘要:在介绍新的外设之前,我们先介绍HAL库是如何设计类似TIM、UART这样更复杂外设的: 在HAL操作GPIO、HAL的中断处理这些小节中我们简单探讨了HAL库在处理这些简单外设时的设计,但在对应TIM、UART这类更复杂的外设时,就需要引入新的设计方法,具体如下 外设句柄设计 句柄概述 初始化结构体 阅读全文
posted @ 2025-05-20 12:59 无术师 阅读(310) 评论(0) 推荐(0)
摘要:时钟源 时钟源的分类 STM32具备五个时钟源 内部时钟 有LSI内部低速时钟(不可作系统时钟)与HSI内部高速时钟两种 内部时钟包含在单片机内部,可以直接调用,其缺点是精度与频率较低 外部时钟 有LSE外部低速时钟(不可作系统时钟)与HSE外部高速时钟两种 外部时钟能够有更高的频率与精度,但需要额 阅读全文
posted @ 2025-05-16 22:05 无术师 阅读(936) 评论(0) 推荐(0)
摘要:定时器的计时功能 定时频率的配置与原理 定时时间公式 从时基单元一节的介绍中,我们可以得到可知从开始计数到发生一次计数溢出的用时(该式仅适用向上与向下计算模式): 溢出周期T=(PSC分频系数+1)×(ARR重装载值+1)/CK_PSC预分频时钟 定时器溢出频率为上式倒数:F=CK_PSC/[(PS 阅读全文
posted @ 2025-05-16 22:06 无术师 阅读(766) 评论(0) 推荐(0)
摘要:定时器的PWM生成功能 PWM生成的配置与原理 PWM生成与输出比较 在STM8的教程中,我们通过配置TIM1_CCMR寄存器,启用TIM独立通道的PWM生成功能来生成PWM信号,需要注意的是,PWM生成模式属于输出比较功能的一个子集,两者有所不同 根据官方的数据手册对TIM1_CCMR_OCiM功 阅读全文
posted @ 2025-05-16 22:07 无术师 阅读(566) 评论(0) 推荐(0)
摘要:UART简介 UART通信原理 UART简述 关于串口通信和UART的种种概念与具体原理已有单独文章解释,在此仅作简述: UART全称Universal Asynchronous Receiver Transmitter,通用异步通信,提供一种异步、串行、全双工的通信方式 异步串行通信让UART只需 阅读全文
posted @ 2025-06-12 19:27 无术师 阅读(2821) 评论(0) 推荐(0)
摘要:DMA DMA原理 数据传输方式 使用中断方式进行串口通信时每接收或发送一个字节都需要进行一次中断,当通信速率较高、数据量较大时,建议使用DMA方式避免频繁中断阻碍其他工作 在中断一章开头中简单介绍过DMA,简而言之就是既不需要像轮询方式一样CPU控制也不需要像中断那样保护与恢复现场,而是通过硬件( 阅读全文
posted @ 2025-06-12 21:09 无术师 阅读(631) 评论(0) 推荐(0)
摘要:IIC简介 IIC通信原理 IIC原理简述 IIC又称I2C或I2C,全称Inter IC总线,实现IC集成芯片之间的同步串行通信 IIC与异步的UART一样也可以只用两根通讯线:数据线SDA与时钟线SCL,但只有一根数据线情况下实现的是半双工通信 对IIC总线通信系统,可以有多个IIC总线器件同时 阅读全文
posted @ 2025-07-22 21:52 无术师 阅读(318) 评论(0) 推荐(0)
摘要:ADC简介 ADC原理 逐次逼近法 ADC具体如何工作在STM8系列中已有详细介绍,不再赘述 开发板电压采集电路原理 蓝桥杯开发板上的电位器结构如下:一个10k的电阻体,两头连接VDD与GND,电位器的电刷连接到STM32的ADC引脚上,调节电刷位置就让能让引脚获得不同的分压值,这个分压值的范围是0 阅读全文
posted @ 2025-07-22 21:53 无术师 阅读(237) 评论(0) 推荐(0)
摘要:实时时钟简介 RTC原理 RTC的硬件原理 RTC全称Real Time Clock,实时时钟,其本质上也是一个定时器,受时钟源驱动,与普通的TIM区别在于其断电后(只要电源电压保持,无论单片机本身在何种模式下)依旧能够独立运行,并且一经上电其寄存器会受到保护,这样的设计是为了让RTC起到记录现实时 阅读全文
posted @ 2025-07-22 21:54 无术师 阅读(142) 评论(0) 推荐(0)
摘要:嵌入式操作系统概述 RTOS简介 在STM32的软件开发一节中,我们介绍了嵌入式系统的两种开发方式,现在为了实现更加复杂的功能,我们开始学习实时操作系统RTOS 嵌入式系统门类广泛,像是手机上用的安卓或iOS都是嵌入式操作系统,此处仅介绍RTOS嵌入式实时操作系统 RTOS是一种具有较高实时性的嵌入 阅读全文
posted @ 2025-12-28 14:47 无术师 阅读(144) 评论(0) 推荐(0)
摘要:FreeRTOS简介 CMSIS-RTOS v2 在CubeMX软件的中间件已经集成了FreeRTOS,可以自动生成FreeRTOS的程序框架,省去了移植RTOS的步骤,因此以FreeRTOS为例来讲解RTOS的具体使用 此外,我们并不使用FreeRTOS原有的接口函数,而是使用经过封装的函数,这一 阅读全文
posted @ 2025-12-29 12:38 无术师 阅读(344) 评论(0) 推荐(0)
摘要:任务的同步,指协调任务之间的执行顺序,任务之间不进行数据传输的关系 使用信号量、事件标志组、线程标志、互斥量来实现 信号量 信号量的分类 二值信号量 取值只为0或1的信号量,取值为0表示事件没有发生,取值为1表示事件已经发生,与之前使用的标志位作用相同 某个任务设置了二值信号量后,另一个任务在需要任 阅读全文
posted @ 2025-12-29 15:11 无术师 阅读(132) 评论(0) 推荐(0)
摘要:在使用信号量、事件标志组和线程标志进行任务同步时,只能提供同步的时刻消息,而当任务之间需要数据传输时,就需要进行任务通信 使用全局变量、消息队列、直接任务通知和邮箱来实现 全局变量 在前后台系统中,我们使用全局变量在各个函数之间传递数据,在RTOS中,这依旧可行 全局变量互斥访问 在RTOS中,全局 阅读全文
posted @ 2025-12-29 20:32 无术师 阅读(131) 评论(0) 推荐(0)
摘要:时序模拟 工作时序 在使用各种器件时,非常高频的操作就是使用GPIO来模拟这些器件所需的各种工作时序,以I2C通信为例,进行I2C启动的时序为: SCL时钟信号为高电平,SDA数据信号由高电平置低,产生下降沿 我们在使用软件模拟I2C时,就会用到如下的代码: void SDA_Output( uin 阅读全文
posted @ 2026-01-03 15:21 无术师 阅读(106) 评论(0) 推荐(0)