- 博客(13)
- 收藏
- 关注
原创 嵌入式RTOS多任务程序设计
UCOS是Micrium公司出品的RTOS类实时操作系统, UCOS目前有两个版本:UCOSII和UCOSIII。UCOSIII是一个可裁剪、可剥夺型的多任务内核,而且没有任务数限制,提供了实时操作系统所需的所有功能,包括资源管理、同步、任务通信等。UCOSIII是用C和汇编来写的,其中绝大部分都是用C语言编写的,只有极少数的与处理器密切相关的部分代码才是用汇编写的, UCOSIII结构简洁,可读性很强!非常适合初次接触嵌入式实时操作系统学生、嵌入式系统开发人员和爱好者学习。什么是任务?
2023-11-27 21:25:32
908
原创 数字温度计
RTCCLK经过RTC_DIV预分频,RTC_PRL设置预分频系数,然后得到TR_CLK时钟信号,我们一般设置其周期为1s,RTC_CNT计数器计数,假如1970设置为时间起点为0s,通过当前时间的秒数计算得到当前的时间。这里时钟自带一个秒中断,每当计数加一的时候就会触发一次秒中断,。第二个模块是一个 32 位的可编程计数器 (RTC_CNT),可被初始化为当前的系统时间,一个 32 位的时钟计数器,按秒钟计算,可以记 录 4294967296 秒,约合 136 年左右,作为一般应用,这已经是足够了的。
2023-11-25 22:08:42
862
原创 汉字点阵与OLED屏显
然后用串口助手等工具软件(带文件传输功能)将一台笔记本上的一个大文件(图片、视频和压缩包软件)传输到另外一台电脑,预算文件大小、波特率和传输时间三者之间的关系,并对比实际传输时间。区位码的字形数据存储格式通常采用轮廓矢量化格式,每个汉字的字形数据由一组矢量描述。| 字形数据1(矢量)| 字形数据2(矢量)| 字形数据3(矢量)| 字形数据4(矢量)|字形数据存储时,首先存储字形数据的长度(字节数),然后存储实际的字形点阵数据。24点阵字形字库中对应字符的字形数据,将名字和学号叠加显示在此图片右下位置。
2023-11-19 22:02:59
52
原创 STM32F103通过IIC协议实现温湿度(AHT20)的采集
IIC 通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、CAN 等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。
2023-11-10 22:14:20
210
1
原创 定时器&PWM应用编程
如图所示,定时器2配置:依次点击位置2,选中定时器2;位置3,配置定时器2的时钟源为内部时钟;位置5,向上计数模式,计数周期为5000,使能自动重载模式。在main.c中定义STM32需要给上位机发送的消息。注意通道一选择PWM generation CH1。打开生成的keil文件里的main.c文件。打开生成的keil文件中的main.c。打开生成的keil文件中的main.c。PA0口选为GPIO-OUTPUT。配置中断,并生成定时器优先级代码。找到while函数,添加以下程序。在keil中观察波形。
2023-11-04 21:40:39
81
1
原创 基于中断/DMA方式的串口通信
在串口通信中,常用的协议包括RS-232、RS-422和RS-485。自收自发:正常通信时RXD接其他设备的TXD,因此如果要接收自己发送的数据顾名思义,也就是自己接收自己发送的数据,即自身的TXD直接连接到RXD,用来测试本身的发送和接收是否正常,是最快最简单的测试方法,当出现问题时首先做该测试确定是否产品故障。于是TTL电平的输入低电平的噪声容限就只有(0.8-0)/2=0.4V,高电平的噪声容限为(5-2.4)/2=1.3V。TXD:发送端,一般表示为自己的发送端,正常通信必须接另一个设备的RXD。
2023-11-02 20:31:04
30
原创 STM32串口通信入门
在串口通信中,常用的协议包括RS-232、RS-422和RS-485。自收自发:正常通信时RXD接其他设备的TXD,因此如果要接收自己发送的数据顾名思义,也就是自己接收自己发送的数据,即自身的TXD直接连接到RXD,用来测试本身的发送和接收是否正常,是最快最简单的测试方法,当出现问题时首先做该测试确定是否产品故障。于是TTL电平的输入低电平的噪声容限就只有(0.8-0)/2=0.4V,高电平的噪声容限为(5-2.4)/2=1.3V。TXD:发送端,一般表示为自己的发送端,正常通信必须接另一个设备的RXD。
2023-10-26 21:35:27
75
原创 基于HAL库的LED流水灯
点击project manger,选择code generator,勾选相应选项。点击project manager,填写相关配置,然后点击生成keil文件。找到main.c,打开main.h文件加入以下代码。1.创建工程,sys、rcc、时钟同上,设置引脚。根据之前博客的相同做法,观察引脚的时序波形。QQ视频20231024185626。QQ视频20231024192234。点击GPIO,选择NVIC,并勾选。配置引脚、sys、rcc、时钟等。在main.c中加入下列程序。即完成中断模式编程流水灯。
2023-10-24 19:31:53
46
原创 用标准外设库方式使用某个端口GPIOx端口管脚控制几个LED灯,轮流闪烁,间隔时长1秒,使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形
点击debug,勾选use simulator,将最下方参数修改为图中所示。2.打开工程文件夹,创建start,library,user三个文件。3.打开固件库文件,找到启动文件分别将对应文件复制到该三个文件夹下面。5.点击魔术棒按钮,打开工程选项C/C++,将刚刚创建的文件添加进来。4.返回keil,点击三个彩色箱子的工程文件管理,添加文件。点击魔术棒,点击target,将Xtal改为8.0。进入后点击set up选项,编辑需要观测的端口。QQ视频20230924184522。运行程序,观察波形图。
2023-10-16 19:28:16
95
1
原创 gcc背后的故事
例如:我们将创建的静态库名为 myhello,则静态库文件名就是 libmyhello.a。动态库文件名命名规范和静态库文件名命名规范类似,也是在动态库名增加前缀 lib,但其文件扩展名为.so。在程序中使用动态库和使用静态库完全一样,也是在使用到这些公用函数的源程序中包含这些公用函数的原型声明,然后在用 gcc 命令生成目标文件时指明动态库名进行编译。在程序 3:main.c 中,我们包含了静态库的头文件 hello.h,然后在主程序 main 中直接调用。静态库中将公用函数连接到目标文件中。
2023-09-29 01:00:50
57
1
原创 STM32F103的流水灯点亮
由于STM32的每个IO都需要4个位来配置,所以一个32位的寄存器最大只能配置8个IO(32位的单片机的寄存器就是32位的)用端口配置高寄存器(GPIOx_CRH)来配置引脚Px8-Px15。找到端口输出数据寄存器,这个数据寄存器的地址就是0x4001 0C0C,把第8位写为0就行。查询数据手册找到GPIOA、GPIOB、GPIOC的地址。配置引脚PB8,使用的寄存器是GPIOB_CRH。可以看出AHB的时钟起始地址。APB2的偏移地址为0x18。2.选择对应器件,连接线路。并选择推挽输出的方式。
2023-09-28 21:50:58
220
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人