- 博客(9)
- 收藏
- 关注
原创 I²C 总线通信与 AHT20 温湿度采集
软件 I2C(Software I2C / bit-banging)是指不使用单片机内部的 I²C 外设,而是把两个普通 GPIO 配置为开漏输出,由 CPU 执行代码,按 I²C 协议手动翻转 SCL、手动驱动和采样 SDA,从而“模拟”出 I²C 波形。/* 起始:SCL 高时 SDA 下降 */SDA_High();SCL_High();SDA_Low();SCL_Low();/* 写 1 位:SCL 低时放数据,SCL 高时从机采样 */SCL_Low();SCL_High();
2026-10-29 20:10:44
147
原创 uC/OS-III 移植与三任务设计
本次实验完成了 uC/OS-III 在 STM32F103C8T6 上的移植,并在此基础上创建了三个周期任务:两个 LED 任务分别以 1s 和 3s 的周期翻转 GPIO,一个串口任务以 2s 的周期发送字符串。编译结果为 0 错误 0 警告,代码占用 Flash 约 11KB、RAM 约 8.4KB,资源占用在芯片容量范围内。通过这次移植,我对 RTOS 的运行机制有了更具体的认识。裸机程序只有一个“大循环 + 中断”,而 RTOS 把 CPU 时间切分成一个个任务,由内核根据优先级调度。
2026-10-29 09:03:16
237
原创 STM32F103 的 OLED 屏显与 u8g2 移植
任务一是"自己造轮子",从 I2C 字节、页寻址、字模一直写到虚拟显存和局部刷新;任务二是"移植轮子",把 u8g2 裁剪、接回调、配链接选项。做完之后对"驱动分层"这件事的感受比看书深得多。一定要分步验证。先扫地址(0x3C)→ 再初始化清屏(全黑)→ 再显示学号(数字对)→ 最后显示汉字(字模对)。每一步都有明确的"通过标准",出问题时才不用一次性怀疑十个地方。我一开始跳过扫描直接写显示,结果卡在"到底是没通信还是字模错"上耗了很久。字模、寻址模式、扫描方向是三个独立的开关。
2026-10-22 19:40:49
308
原创 定时器&PWM应用编程
STM32F103C8T6属于中等容量产品,内置4个通用定时器(TIM2~TIM5)。每个通用定时器包含一个16位自动装载计数器,由可编程预分频器驱动,具有4个独立通道,可用于输入捕获、输出比较、PWM生成和单脉冲模式输出。通用定时器的时钟源来自APB1总线。当APB1预分频系数为1时,定时器时钟等于APB1时钟频率;否则定时器时钟为APB1时钟的2倍。在本实验的72MHz系统时钟配置下,APB1总线频率为36MHz,但由于APB1预分频系数不为1,定时器时钟为72MHz。
2026-10-17 00:41:12
189
原创 STM32最小核心板F103串口通信
本次实验基于STM32F103与HAL库,分别利用串口中断与DMA方式实现了与上位机的通信。在中断任务中,通过收发回调函数及状态标志位成功实现了“#”暂停与“*”恢复发送的功能;在DMA任务中,验证了其不占用CPU的高速传输特性。结合Keil逻辑分析仪进行时序观测,实测波特率为115254.4bps,误差仅0.047%,完美验证了72MHz系统时钟的准确性。通过实验,不仅掌握了外设底层配置与代码调试技巧,更深刻理解了HAL库的设计思想及阻塞、中断、DMA三种通信方式的本质区别。
2026-10-15 12:59:04
123
原创 基于HAL库+按键中断方式控制流水灯运行
定义常量,给引脚、延时起名字,方便阅读修改1000U本次实验基于 STM32F103C8T6 芯片与 HAL 库,完成了外部中断控制三路流水灯启停的设计与实现。通过 STM32CubeMX 完成系统时钟、GPIO 输出与 PA1 双边沿外部中断的配置,在 Keil 中编写用户程序,实现 PA1 高电平时流水灯循环点亮、低电平时所有 LED 熄灭的功能。实验掌握了 HAL 库 GPIO 引脚输入输出的使用方法,理解了外部双边沿中断的工作原理与回调函数执行机制。
2026-09-28 16:57:18
226
原创 标准外设库点亮STM32流水灯
寄存器开发是直接操作硬件寄存器;标准外设库将寄存器操作封装为函数,简化开发,便于快速编写和维护程序,但底层仍然是寄存器操作。寄存器开发直接操作寄存器地址与比特位;标准库通过结构体和 API 函数配置外设,屏蔽底层寄存器细节。对比项直接寄存器编程标准外设库 SPL操作对象直接操作寄存器地址、bit 位调用库函数 + 结构体,底层由库函数操作寄存器代码长度代码简短,但需要记忆寄存器名字、位编号代码行数多,填写结构体参数,不用记寄存器每一位学习门槛高。要看懂芯片手册寄存器说明,容易写错 bit 位置低。
2026-09-27 23:16:54
191
原创 STM32F103的流水灯点亮版本1(寄存器地址操作)
STM32F103C8T6 是 ST 意法半导体推出的Cortex‑M3 内核 32 位高性能单片机,LQFP‑48封装,是学生嵌入式学习最常用的最小系统核心板。本次STM32裸寄存器流水灯实验,可以掌握了GPIO相关寄存器的配置方法,明白STM32外设上电后时钟默认关闭,使用前必须开启对应时钟。实验中学会使用Keil调试功能,单步运行观察寄存器数值变化,直观验证代码效果。也认识到软件空循环延时精度较差,仅适合实验演示。编写代码不能直接复制照搬,要弄懂每一行代码对应的硬件操作。
2026-09-22 19:59:28
139
原创 【下载Vmware,在其中安装Ubuntu 22.04,并用gcc和Makefile编写C语言程序】
在 Windows 上用虚拟机安装 Ubuntu,更换国内软件源提升下载速度。先是写 Hello World 程序,用 gcc 编译运行;然后写两个 C 文件,实现跨文件调用函数,分别在 Ubuntu 和 Windows 下测试。之后安装 make 工具,编写 Makefile,实现一键编译。我们要平时多敲 Linux 命令,别只看不动手;写 Makefile 一定要注意 Tab 和空格的坑;多文件编程要理清函数声明,遇到报错先仔细看终端提示。
2026-09-11 20:54:16
277
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅