自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 嵌入式操作系统(RTOS)移植与实践

uc/OS-III是一个可升级的、可固化的、基于优先级的实时内核。1、基本特性(1)多任务处理:uc/OS-III是一个支持多任务抢占的内核,能够使得一个CPU核心“同时运行”多个任务。实际上,CPU核心在某一时刻只能运行一个任务,但操作系统中的任务调度器可以快速地在各个任务之间来回切换,从而给人造成了一种同一时刻有多个任务同时运行的错觉。(2)任务优先级:uc/OS-III允许用户为每个任务分配一个优先级,任务调度器会根据此优先级来决定下一刻应该运行哪个任务。

2025-11-03 18:53:27 987

原创 OLED显示

二是结合 AHT20 传感器,经 I2C 采集温湿度数据,通过公式校准后,在 OLED 与串口同步输出(精度 0.1℃/0.1% RH)。TIM1、I2C、USART 等外设协同正常,U8g2 硬件 I2C 驱动降低 CPU 占用,数据处理逻辑可靠,无丢包或显示异常。调试中解决 OLED 无显示(驱动函数选错)、AHT20 数据为 0(初始化顺序错)等问题,学会分模块验证。模块化编程(如 OLED 驱动封装)提升代码复用性,也让我意识到时序与参数匹配的重要性,为后续嵌入式项目打下基础。

2025-10-31 21:48:44 272

原创 IIC协议采集温湿度

本文介绍了基于STM32F103C8T6的温湿度采集系统实现方法。系统采用I2C接口与AHT20传感器通信,利用硬件I2C模块自动处理通信协议。通过STM32CubeMX配置硬件资源,包括RCC时钟、GPIO、USART串口和I2C接口。软件实现包含printf重定向和OLED显示驱动,能实时显示温湿度数据并通过串口发送到上位机。OLED界面采用u8g2图形库,支持显示温度、湿度的汉字字符和数值,初始界面包含"温湿度待检测"提示信息。系统实现了从传感器采集到数据显示的完整流程。

2025-10-29 20:09:27 341

原创 GCC背后的故事&C程序常量变量的地址分配

在test文件夹中分别创建sub1.c,sub2.c,main1.c三个文件return 0;

2025-10-11 23:45:31 699

原创 FlashRom

在进行Flash地址空间的数据读取与写入操作时,要充分了解芯片的内存分布和Flash特性,以便更好地规划实验方案。在进行Flash地址空间的数据读取与写入操作时,要充分了解芯片的内存分布和Flash特性,以便更好地规划实验方案。stm32f103c8t6只有20KB 内存(RAM)供程序代码和数组变量存放,因此,针对内部Flash的总计64KB存储空间(地址从0x08000000开始),运行一次写入8KB数据,总计复位运行代码8次,将64KB数据写入Flash,并验证写入数据的正确性和读写速率。

2025-01-02 20:32:20 1026

原创 多任务程序设计

(2)打开includes.h文件在#include <bsp.h>下面添加 #include “gpio.h” 与#include “app_cfg.h”将#include <stm32f10x_lib.h> 改为 #include “stm32f1xx_hal.h”(1)在CONFIG中打开app_cfg.h文件,将DEF_ENABLED 改为 DEF_DISABLED将#define APP_TRACE BSP_Ser_Printf 改为 #define APP_TRACE(void)

2024-12-25 22:08:33 825

原创 温湿度采集与OLED显示

同时,在实验过程中,我学会了如何阅读数据手册,并根据手册内容编写程序,这极大地提升了我的动手能力和问题解决能力。通过编程实现温湿度数据的采集和显示,我更加熟练地掌握了STM32的编程技巧,包括I2C通信的配置、串口通信的设置以及OLED显示的控制。本次实验中,我明晰了“软件I2C”和“硬件I2C”的概念,并成功使用STM32F103微控制器通过I2C协议与AHT20温湿度传感器进行通信,实现了数据的定时采集,并通过串口将温度-湿度值输出到上位机。(1)在文件中加入aht20.c和aht20.h。

2024-12-15 22:49:00 808

原创 定时器与PWM

相较于传统的循环和延时函数实现方式,定时器具有更高的时间控制精度和更好的系统性能。在今后的学习和项目中,我将充分发挥PWM技术的优势,为实际应用场景提供更多解决方案。本次实验锻炼了我的动手能力和解决问题的能力,使我更加熟练地掌握了嵌入式系统的开发技巧。在今后的学习和工作中,我将继续努力,不断提高自己的实践能力。通过设置两个定时器,分别实现了5秒周期性串口发送数据和2秒周期性LED闪烁的多任务并发运行。此外,在本次实验中,通过输出PWM波形,成功实现了两个LED呼吸灯效果。(2)重写定时器的中断回调函数。

2024-12-11 21:23:52 979

原创 STM32串口通信

通过本次实验,我对STM32的串口通信有了更深入的了解,也为后续更复杂的嵌入式项目打下了坚实的基础。信号线映射:通常,USB信号线(如D+和D-)转换为TTL的TX(发送)、RX(接收)、RTS(请求发送)、CTS(清除发送)、DTR(数据终端就绪)和DSR(数据设备就绪)等信号线。通常,逻辑“1”的电平在-3到-15伏之间,逻辑“0”的电平在+3到+15伏之间。信号线映射:TTL的TX和RX信号线会转换为RS-232的TXD(发送数据)和RXD(接收数据)信号线,同时还包括控制信号线的转换。

2024-12-09 22:52:05 1106

原创 基于HAL库和中断的LED流水灯

实验过程中,我首先掌握了STM32CubeMX和Keil的配合使用,通过HAL库函数完成了LED流水灯的周期闪烁。在今后的学习和工作中,我将继续努力,将所学知识运用到实际项目中,不断提高自己的技能水平。回到初始界面,创建新项目,在part name里选择自己的芯片,点击信息栏中的具体芯片信息选中,点击start project。配置时钟,勾选RCC,有两个时钟,是hse和lse,将hse那里设为Crystal/Ceramic Resonator。而后按图片所示1、2、3进行操作,操作完成后点击OK即可。

2024-12-01 11:06:06 982

原创 基于寄存器地址&标准外设库的LED流水灯

通过本次实验,我实现了使用STM32标准外设库控制GPIO端口,实现LED灯轮流闪烁的功能。实验中,我采用了STM32F103C8T6芯片,通过配置GPIOA、GPIOB、GPIOC端口的管脚,实现了四个LED灯的轮流闪烁。在实验过程中,我也遇到了一些问题,如代码编译错误,通过查阅资料、请教同学和老师,我勉强解决了这些问题,提高了自己的实践能力。(2)点击Project,选择New uVision Project在弹出的对话框中,导航到一个文件夹,输入工程名称(例如LED_Blink),然后点击保存。

2024-11-20 21:28:54 947

原创 Ubuntu20.04用gcc和Makefile编译C程序

编写一个简单的输出 hello word 的程序。然后将基于上文内容的程序编入其中。(我图方便直接下在主目录上了)

2024-11-13 17:23:47 231

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除