南耿先生
高职计算机教师,死磕嵌入式与电子技术
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
我在高职教STM32(新26)——通用定时器输入捕获实验
上一篇利用定时器的输出比较功能输出了精准的 PWM 波形,本篇我们聚焦输入捕获功能,利用该功能,测量按键按下的时长,即外部信号的低电平的脉宽。分为 4 个小节:1)输入捕获基本原理;2)实验任务描述;3)定时器的 HAL 库驱动;4)程序源码解析原创 2025-12-19 20:50:10 · 59 阅读 · 0 评论 -
我在高职教STM32(新25)——通用定时器PWM输出实验
上一篇详细解读了通用定时器的功能框图,信息量较大,需要通过具体实验来加深理解。本篇是第 2 篇,我们使用定时器的输出比较功能,输出一个精准可控的 PWM 波形,并通过示波器来观察波形的参数,分 5 个小节:1)定时器的 PWM 工作模式和比较原理;2)实验任务描述;3)定时器的 HAL 库驱动;4)准备工程目录和文件;5)程序源码解析原创 2025-12-19 07:27:58 · 226 阅读 · 0 评论 -
我在高职教STM32(新24)——通用/高级定时器功能解读
STM32F103 有 4 个通用定时器(TIM2~TIM5)和两个高级定时器(TIM1/TIM8),笔者计划用 4 篇文章(含 3 个实验)来系统学习通用定时器的各个功能。本篇是第 1 篇,立足手册,对通用定时器的功能框图和寄存器做一番解读,分为 2 个小节:1)通用/高级定时器概览;2)通用定时器功能框图详解原创 2025-12-15 08:16:48 · 96 阅读 · 0 评论 -
我在高职教STM32(新23)——基本定时器扫描按键
本篇在上一篇基础上增加新的效果:启用基本定时器 TIM7,使其能够识别 KEY1 按键的单击、双击和长按这几种动作,并通过串口打印结果,效果如图 2 所示,该实验分为 4 个小节:1)按键动作编程要点;2)准备工程目录和文件;3)程序源码解析;4)下载测试和验证原创 2025-12-08 11:42:41 · 89 阅读 · 0 评论 -
我在高职教STM32(新22)——基本定时器呼吸灯
呼吸灯实验我们在第 5 篇里做过,当时是用延时来模拟 PWM 的。关于主循环里延时过长的弊端,也在文中解释过了。因此,这里我们就改用基本定时器来实现,PWM 的控制都在 TIM6 的更新中断里完成,也是一种软件模拟的方式,但不需要延时了。本篇分为 3 个小节:1)准备工程目录和文件;2)程序源码解析;3)下载测试和验证原创 2025-12-08 08:06:19 · 119 阅读 · 0 评论 -
我在高职教STM32(新21)——基本定时器解读
笔者计划用 3 篇文章来讲解如何使用基本定时器,并完成两个实验:第一个是将第 5 篇的呼吸灯用定时器重新实现一遍,改进之前纯靠延时的不足;第二个是检测按键的单击、双击和长按,这里面涉及到判断按下和松开的时长,用定时器是再合适不过了。本篇是第 1 篇,先详细解读一下基本定时器,分为 7 个小节:1)STM32 定时器总览;2)基本定时器功能框图;3)定时器周期计算;4)TIM6/TIM7 寄存器;5)基本定时器中断应用;6)定时器的 HAL 库驱动;7)定时器及中断配置步骤原创 2025-12-05 19:32:18 · 165 阅读 · 0 评论 -
我在高职教STM32(新20)——SysTick定时器与延时实现
前面已经详细剖析了 SYSCLK、HCLK、PCLK1 和 PCLK2 的来龙去脉,后续绝大多跟时间有关的控制都可以追根溯源到这几个时钟,下面我们就来研究一下 delay() 延时函数是怎么实现的。本篇将分为 2 个小节:1)SysTick 系统滴答定时器;2)延时功能的源码解析原创 2025-12-05 08:05:30 · 214 阅读 · 0 评论 -
我在高职教STM32(新19)——STM32F1时钟系统配置
上一篇针对 STM32F1 的时钟树,比较细致的介绍了其中的各个要点,尤其是时钟主线中各节点的时钟信号。本篇我们将分几步给大家讲解 STM32F1 时钟系统的配置过程,这部分内容很重要,请大家认真阅读,分为 4 个小节:1)配置 HSE_VALUE;2)调用 SystemInit 函数;3)编写时钟设置函数;4)外设时钟使能和配置原创 2025-12-01 08:27:51 · 89 阅读 · 0 评论 -
我在高职教STM32(新18)——STM32F1的时钟系统
在我们继续深入学习之前,有必要了解 STM32 时钟系统的脉络,进而才能理解所有跟时间有关的机制和配置。笔者计划用 4 篇文章来详细解读 STM32F1 时钟系统的架构和配置,以及延时函数是如何精确控制的。本文是第 1 篇,先来剖析一下 STM32F1 的时钟树(系统),分为4 个小节:1)认识时钟树;2)时钟源;3)时钟分配;4)时钟主线原创 2025-11-30 09:41:14 · 111 阅读 · 0 评论 -
我在高职教STM32(新17)——串口通信实验解读
经过前面 3 篇的铺垫,本篇就来完成一个串口通信的基础实验,有“打印”发送,也有消息接收,并详细剖析一下相关的源码。本篇分 3 个小节:1)实验任务描述;2)程序源码解析;3)测试与总结原创 2025-11-30 09:40:41 · 258 阅读 · 0 评论 -
我在高职教STM32(新16)——串口通信实验准备
前两篇对 STM32 串口通信的背景知识做了详细的介绍,本篇是第 3 篇,在分析串口通信实验源码之前,我们先做好必要的准备工作,包括两个小节:1)串口的 HAL 库驱动;2)串口通信配置步骤原创 2025-11-26 15:31:14 · 132 阅读 · 0 评论 -
我在高职教STM32(新15)——STM32F103串口详解
STM32F103 的串口资源相当丰富,功能也相当强劲。本篇是串口通信的第 2 篇,详细解读一下 STM32F103 的串口设计。分为 4 个小节:1)USART 和 UART;2)USART 框图;3)USART 寄存器;4)GPIO 引脚复用功能原创 2025-11-22 22:59:39 · 470 阅读 · 0 评论 -
我在高职教STM32(新14)——串口通信的必备知识
串行通信,也就是我们常说的串口,是 MCU 最常用的一种通信技术,通常用于 MCU 和电脑之间、MCU 和 MCU 之间、MCU 与外围器件的通信。本章我们将学习 STM32F103 的串口,教大家如何用它来发送和接收数据。本篇是第 1 篇,我们来了解一下串口通信的一些必备知识,包含以下 3 个小节:1)通信的一些基本概念;2)串口通信的电气特性与逻辑协议;3)开发板与电脑之间的串口通信原创 2025-11-22 15:12:03 · 38 阅读 · 0 评论 -
我在高职教STM32(新13)——按键外部中断实验
上一篇我们已经详细介绍了 NVIC,对 STM32F1xx 中断管理系统有个全局的了解。记住,只要用到 STM32 的中断,就一定绕不开 NVIC。在众多的中断向量中,本篇关注 EXTI(External Interrupt,外部中断/事件),是比较常用的一类中断。我们将学习如何把 IO 口作为外部中断输入来使用,重新实现按键控制 LED 的功能。本篇分为如下几个小节:1)从按键检测的方式谈起;2)EXTI 的响应过程;3)EXTI 的 HAL 库驱动;4)程序代码设计;5)下载测试与总结原创 2025-11-16 14:20:26 · 279 阅读 · 0 评论 -
我在高职教STM32(新12)——STM32中断概览
某种程度上,中断可以说是嵌入式的“灵魂”,后续几乎所有实验都会涉及中断。因此,中断的讲解放在哪一个外设里面去讲都不合适,所以这里单独抽出一篇来做一个概括性的介绍,这样在其他外设涉及到中断部分知识的时候,就不用费很大的篇幅去讲解,只要示意性带过即可。本篇分为三个小节:1)中断的产生背景;2)STM32 强大的中断系统;3)NVIC 使用与中断编程要点原创 2025-11-16 12:42:25 · 390 阅读 · 0 评论 -
我在高职教STM32(新11)——LCD1602显示效果控制
上一篇已经详细解读了 LCD1602 的驱动程序,本篇我们就来编写主程序,调用所需驱动做两个具体的显示效果:1)字符(串)跳动移动显示;2)按键连按计数显示原创 2025-11-08 20:40:26 · 110 阅读 · 0 评论 -
我在高职教STM32(新10)——LCD1602驱动程序分析
本篇分析一下 LCD1602 的底层驱动代码,大家会学习到如何将 LCD1602 的工作时序进行分解并转换成对应的驱动函数,这个过程是嵌入式开发必须要经历的,并且会在接下来的项目中逐步强化。本篇分成两个部分:1)准备工程目录和文件;2)驱动源码分析原创 2025-11-06 22:28:56 · 174 阅读 · 0 评论 -
我在高职教STM32(新09)——LCD1602工作时序与基本命令
本篇是 LCD1602 项目的第二部分,重点学习它的工作时序和基本命令,这是本项目的难点,也是编写驱动程序的基础,分四个重点来讲解:1)显示地址与字符位置;2)状态字节;3)读写时序;4)指令码与控制效果原创 2025-11-02 15:59:44 · 177 阅读 · 0 评论 -
我在高职教STM32(新08)——初识LCD1602
本篇开始,我们来学习一下开发板配套的那块液晶屏 —— LCD1602,聚焦的是这个器件本身的特点和工作时序。由于 LCD1602 本身的知识比较多,因此笔者计划分成 4 篇内容进行讲解,这是第一篇,我们来初步了解一下 LCD1602,包含 3 个小节:1)LCD1602 的产品外观;2)LCD1602 的电气参数;3)LCD1602 的硬件接口原创 2025-11-01 18:40:39 · 267 阅读 · 0 评论 -
我在高职教STM32(新07)——按键输入实验
按键是初学嵌入式的第一类输入器件,入门不难,但是一旦按法多样化(单击/双击/长按),或是结合其他被控器件,就需要用上中断、定时器、状态机等知识,难度也就上来了。本章暂时还不谈这些知识,聚焦的还是 GPIO 的基本操作,用的是输入模式。开发板上一共有 4 个独立按键,我们将利用其中的两个,来控制 LED 的亮灭方式。本篇分为 4 个小节:1)认识按键开关;2)硬件原理分析;3)程序代码设计;4)下载验证测试原创 2025-10-26 17:21:30 · 255 阅读 · 0 评论 -
我在高职教STM32(新06)——蜂鸣器鸣响实验
本篇是前两篇主题的延续,通过 STM32 的 IO 口来控制开发板上的有源蜂鸣器。通过本篇的学习,进一步了解 STM32 的 IO 口作为输出口使用的方法,安排了 3 个小节:1)认识蜂鸣器;2)蜂鸣器编程实践;3)验证测试与小结。原创 2025-10-26 10:41:41 · 109 阅读 · 0 评论 -
我在高职教STM32(新05)——呼吸灯实验(基础版)
本篇在上一章的基础上,引导大家实现一个简单且常见的效果——呼吸灯。所谓“呼吸灯”,是指 LED 灯光由暗到亮再到暗,循环变化,仿佛“呼吸”一般。本实验将通过软件延时方式调节 PWM 占空比,达到类似呼吸灯的效果,帮助大家理解 PWM 的概念及其应用。本章分为 3 个小节:1)PWM 基础知识简介;2)程序代码设计;3)下载验证与效果观察原创 2025-10-16 16:46:24 · 191 阅读 · 0 评论 -
我在高职教STM32(新04)——流水灯实验
本篇将通过一个经典的流水灯程序(嵌入式开发的 Hello World),带大家开启 STM32 之旅。通过本章的学习,我们将了解到 STM32F103 的 GPIO 口作为输出使用的方法,并通过代码控制开发板上的 4 个 LED 灯轮流点亮。本篇分为 4 个小节:1)浅谈 STM32 的 GPIO;2)硬件原理分析;3)程序代码设计;4)下载验证测试;5)一点补充原创 2025-10-12 10:19:28 · 210 阅读 · 0 评论 -
我在高职教STM32(新02)—— STM32初体验
本篇,我们不介绍如何编写代码,而是向大家介绍如何编译和下载,体验一下 STM32 的开发流程,并介绍 MDK5 的一些使用技巧。通过本章的学习,将对 STM32 的开发流程和 MDK5 使用有个大概了解,为后续深入学习打好基础。原创 2025-09-15 05:48:32 · 722 阅读 · 1 评论 -
我在高职教STM32——准备HAL库工程模板(2)
上一篇已经将模板工程里的目录和文件都准备好了,本篇将创建 Keil MDK 工程及分组,并将前面准备好的 HAL 库文件添加进工程分组。原创 2024-09-16 15:00:28 · 678 阅读 · 0 评论 -
我在高职教STM32(新03)——HAL库与MDK工程模板
考虑到 STM32 主流的开发方式,后续所有的工程代码调用的都是 HAL 库的 API 函数。因此,本章有必要先介绍以下 STM32 的 HAL 库的作用、结构框架和使用方法,然后重点讲解基于 HAL 库来新建 MDK 工程的详细步骤。本章将分为如下两个小节:1)初识 STM32 HAL 库;2)新建 HAL 库版本 MDK 工程。原创 2024-09-07 21:03:06 · 495 阅读 · 0 评论 -
我在高职教STM32——ADC电压采集与光敏电阻(5)
本文是《ADC电压采集与光敏电阻》的第五篇,除了采集光敏电阻上的电压,还采集了STM32片内的温度值,即双通道采集,程序上搭配了DMA来搬运数据。原创 2024-09-02 13:38:45 · 814 阅读 · 0 评论 -
我在高职教STM32——ADC电压采集与光敏电阻(4)
本文是《ADC电压采集与光敏电阻》的第四篇,剖析了光敏电阻上电压采集的源码。原创 2024-08-29 14:54:15 · 881 阅读 · 0 评论 -
我在高职教STM32——ADC电压采集与光敏电阻(3)
本文是《ADC电压采集与光敏电阻》的第三篇,针对STM32的ADC配置要点做了解读,并明确的实验目标、工程文件和编程要点。原创 2024-08-27 17:14:20 · 1050 阅读 · 0 评论 -
我在高职教STM32——ADC电压采集与光敏电阻(2)
本文是《ADC电压采集与光敏电阻》的第二篇,对STM32的ADC有一个较为全面的概览。原创 2024-08-26 11:54:06 · 666 阅读 · 0 评论 -
我在高职教STM32——ADC电压采集与光敏电阻(1)
本文是《ADC电压采集与光敏电阻》的第一篇,先来了解一下ADC的背景知识和开发板上的光敏电阻。原创 2024-08-19 10:24:49 · 248 阅读 · 0 评论 -
我在高职教STM32——I2C通信之SHT20传感器(2)
本文是《I2C通信之SHT20传感器》的第二篇,详细剖析SHT20的驱动源码,并实现温湿度的实时采集和显示。原创 2024-08-17 16:52:08 · 566 阅读 · 1 评论 -
我在高职教STM32——I2C通信之SHT20传感器(1)
本文是《I2C通信之SHT20温湿度传感器》的第一篇,详细解读一下SHT20的关键特性和通信时序。原创 2024-08-13 10:11:34 · 579 阅读 · 0 评论 -
我在高职教STM32——I2C通信之读写EEPROM(4)
本文是《I2C通信之读写EEPROM》的最后一篇,安排了一个简易广告屏的综合实验,融合了读写EEPROM、串口收发、液晶显示。原创 2024-08-12 00:26:18 · 271 阅读 · 0 评论 -
我在高职教STM32——I2C通信之读写EEPROM(3)
本文是《I2C通信之读写EEPROM》的第三篇,安排了两个实验:多字节读写和按页写入。原创 2024-08-12 00:22:44 · 333 阅读 · 0 评论 -
我在高职教STM32——I2C通信之读写EEPROM(2)
本文是《I2C通信之读写EEPROM》的第二篇,针对AT24C02的读写时序做了必要解读,并做了一个单字节读写的实验。原创 2024-08-10 08:32:25 · 720 阅读 · 0 评论 -
我在高职教STM32——I2C通信之读写EEPROM(1)
本文是《I2C通信之读写EEPROM》的第一篇,先聊聊关于存储器的一些常识,搞清楚SRAM、DRAM、EEPROM、NOR FLASH、NAND FLASH这些存储器的区别。原创 2024-08-09 09:18:17 · 445 阅读 · 0 评论 -
我在高职教STM32——I2C通信入门(3)
本文是《I2C通信入门》的第三篇,重点剖析“软件模拟I2C”的相关源码。原创 2024-08-08 12:13:28 · 475 阅读 · 0 评论 -
我在高职教STM32——I2C通信入门(2)
本文是《I2C通信入门》的第二部分,对STM32的I2C做了必要的解读,并明确了使用软件模拟的方式来编写I2C的驱动。原创 2024-08-08 10:55:09 · 810 阅读 · 1 评论 -
我在高职教STM32——I2C通信入门(1)
相较于串口通信,I2C通信涉及的底层协议、硬件连接、上层应用、驱动程序都比较复杂。本篇I2C通信的物理层和协议层。原创 2024-08-05 10:26:03 · 760 阅读 · 0 评论
分享