自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

学习嵌入式实时操作系统(RTOS),以uc/OS为例,将其移植到stm32F103上,构建至少3个任务(task):其中两个task分别以1s和3s周期对LED等进行点亮-熄灭的控制;另外一个task以2s周期通过串口发送“hello uc/OS!欢迎来到RTOS多任务环境!记录详细的移植过程。

2025-11-03 20:20:40 741

原创 OLED显示

1、了解I2C协议的基本原理和时序协议;2、掌握0.96寸OLED屏的工作原理,汉字点阵显示原理;3、掌握开源GUI库U82G在stm32上的移植编译方法,以及图形界面可视化技术。

2025-10-31 21:03:40 544

原创 IIC协议采集温湿度

具体任务:1)解释什么是“软件I2C”和“硬件I2C”?(阅读野火配套教材的第23章“I2C–读写EEPROM”原理章节)2)阅读AHT20数据手册,编程实现:每隔2秒钟采集一次温湿度数据,并通过串口发送到上位机(win10)。

2025-10-29 12:38:10 246

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

学习任务如下: 1)阅读、理解和学习材料“用gcc生成静态库和动态库.pdf”和“静态库.a与.so库文件的生成与使用.pdf”,请在Linux系统(Ubuntu)下如实仿做一遍。2)在第一次作业的程序代码基础进行改编,除了x2x函数之外,再扩展写一个x2y函数(功能自定),main函数代码将调用x2x和x2y;将这3个函数分别写成单独的3个 .c文件,并用gcc分别编译为3个.o 目标文件;

2025-10-11 22:00:13 278 1

原创 FlashRom

Flash地址空间的数据读取。stm32f103c8t6只有20KB 内存(RAM)供程序代码和数组变量存放,因此,针对内部Flash的总计64KB存储空间(地址从0x08000000开始),运行一次写入8KB数据,总计复位运行代码8次,将64KB数据写入Flash,并验证写入数据的正确性和读写速率。此外,继续往后续地址写入数据,检验stm32f103c8t6 实际FlashROM是否超过64KB。

2024-12-29 19:41:50 370

原创 多任务程序设计

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

2024-12-25 22:52:13 730

原创 定时器与PWM

1. 之前作业中的延时功能都是通过循环、delay/Hal_delay函数等实现,本次作业通过定时器Timer方式实现时间的精准控制,相当于给CPU上了一个闹钟,CPU平时处理其它任务,当定时时间到了以后,处理定时相关的任务。请设置一个5秒的定时器,每隔5秒从串口发送“hello windows!同时设置一个2秒的定时器,让LED等周期性地闪烁,实现一个多任务并发运行的功能。思考,如果不采用定时器,如何同时完成上面两个周期性任务?

2024-12-11 22:52:45 308

原创 STM32串口通信

为了增加串口通讯的远距离传输及抗干扰能力,RS-232标准使用-15V 表示逻辑 1, +15V 表示逻辑 0。串口协议就是一种数据传输协议,常用于计算机和其他设备之间的通信,它定义了数据传输的规则,如数据格式、传输速率等。四. 在没有示波器条件下,可以使用Keil的软件仿真逻辑分析仪功能观察任务二(1)串口输出波形,并分析时序状态正确与否,计算波特率实际为多少。1、预估文件大小、波特率和传输时间三者之间的关系,并对比实际传输时间。RS-232:逻辑0表示-5V至-15V,逻辑1表示+5V至+15V。

2024-12-09 22:34:45 1240

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

一. 了解并掌握STM32中断原理,HAL库函数开发方法。安装 stm32CubeMX,配合Keil,使用HAL库方式完成下列任务:1、重做上一个LED流水灯作业,即用GPIO端口完成3只LED红绿灯的周期闪烁。2、用stm32F103核心板的GPIOA端某一管脚接一个开关(用杜邦线模拟代替)。采用中断模式编程,当开关接高电平时,LED流水灯工作;接低电平时,LED流水灯停止工作。

2024-12-01 21:25:14 333

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

1)写出程序设计思路,包括GPIOx端口的各寄存器地址和详细参数;2)用C语言寄存器方式编程实现,代码须有详细注解。3)STM32最小系统核心板子出厂时已经焊接好了1个led灯(标注了PC13处),一般可通过此灯的点亮让编程者验证自己烧录的代码是否正常运行了。请查阅最小版电路原理图和相关资料,将这个灯也用在流水灯中,重编新程序。

2024-11-20 23:22:53 578

原创 嵌入式开发环境与软件编程基础

本次实验,我学习了如何在Ubuntu和Windows系统下编写、编译和运行C语言程序;理解了主程序和子程序之间的调用关系;学习了使用Makefile自动化编译过程,为未来的学习工作打下了基础。

2024-11-15 08:49:42 425

【C语言开发】基于GCC的静态动态库构建与内存管理:Ubuntu及STM32平台变量地址分配分析

内容概要:本文详细介绍了GCC编译器的工作原理及其在Linux系统下的实际应用,涵盖从源代码到可执行程序的完整编译流程。重点讲解了GCC编译的四个阶段(预处理、编译、汇编、链接),并通过实例演示如何使用gcc生成静态库(.a)和动态库(.so),比较两者在文件大小和运行时依赖方面的差异。同时,文章还探讨了gcc工具链中各组件的作用及常见编译选项(如-Wall、-Werror、-static等)的使用方法。最后,通过编写C程序深入分析全局常量、全局变量、局部变量、静态变量、堆、栈等在Ubuntu(x86架构)与STM32(ARM Cortex-M)平台上的内存地址分配情况,帮助读者理解不同体系结构下程序的存储布局。; 适合人群:具备基本C语言编程能力,正在学习嵌入式开发或Linux系统编程的初学者,以及希望深入了解GCC编译机制和程序内存布局的1-3年经验开发者; 使用场景及目标:①掌握gcc生成静态库与动态库的方法及其区别;②理解程序在不同平台(x86与ARM)中各类变量的内存分布规律;③熟悉GCC编译流程及常用参数在项目构建与调试中的实际应用; 阅读建议:建议读者在Ubuntu环境中动手实践文中所有命令和代码示例,同时在Keil中搭建STM32工程进行对比验证,以加深对编译过程和内存管理机制的理解。

2025-10-11

空空如也

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

TA关注的人

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