- 博客(15)
- 收藏
- 关注
原创 STM32F103C8移植uCOSIII(HAL库)
uCOSIII成功移植到STM32F103C8并运行良好HAL库STM32F103C8的开发提供了便利和高效的方法。对于不同的微控制器,需要根据其硬件特性进行相应的移植工作。配置硬件:根据STM32F103C8的数据手册配置相关硬件,如时钟、GPIO等。移植uCOSIII:根据uCOSIII的移植指南,进行相关配置和代码修改。编写应用程序:基于uCOSIII的任务调度和HAL库,编写简单的任务代码。调试:使用Keil uVision的调试功能,单步执行并观察程序运行状态。验证HAL库的功能和性能。
2023-11-27 21:01:58 939
原创 STM32日历读取,设置和输出
在这一时基调节过程中,调整量的大小,是增还是减,均是通过对一个RTC内部指定寄存器赋值来实现的,也就是通过测算当前所用晶振的频率与理论零误差晶振的差值而得出此次补偿字节的值。TTF是RTC发展史上具有里程碑意义的技术,从此以晶振为基准的电子钟表,也可以具备类似传统钟表控制摆长以调节精度的功能。而一般的计数器都是16位的。最新一代RTC产品中,除了包含第二代产品所具有的全部功能,更加入了复合功能,如低电压检测,主备用电池切换功能,抗印制板漏电功能,且本身封装更小(高度0.85mm,面积仅为2mm*2mm)。
2023-11-25 22:51:58 896
原创 点阵汉字的字模读取与显示
为了解决这个问题,有些点阵字库会将 14×14 和 12×12 的字库按 16×14 和 16×12 来存储,即,每行还是按两个字节来存储,但是 14×14 的字库,每 两个字节的最后两位是没有使用,12×12 的字节,每两字节的最后 4 位是没有 使用,这个根据不同的字库会有不同的处理方式,所以在使用字库时要注意这个 问题,特别是 14×14 的字库。即每两个字节代表一行的 16 个点,共需要 16 行,显示汉字时,只需一次 性读取 32 个字节,并将每两个字节为一行打印出来,即可形成一个汉字。
2023-11-19 22:15:36 345
原创 电脑之间串口传输文件
由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但不是必须的。将两台笔记本电脑,借助 usb转rs232 模块和杜邦线,建立起串口连接。然后用串口助手等工具软件(带文件传输功能)将一台笔记本上的一个大文件(图片、视频和压缩包软件)传输到另外一台电脑,预算文件大小、波特率和传输时间三者之间的关系,并对比实际传输时间。实际传输时间比理论传输时间要长一些,分析原因,可能是传输时,每隔一段字节就会插入一段延时,也可能是由于在传输过程中出现丢包、错误等重传现象导致。
2023-11-19 21:05:58 107
原创 STM32+OLED屏显应用实例
实验过程中,我不仅学会了如何驱动OLED屏幕,还学会了如何编写相关的控制程序。通过这次实验,我不仅学会了OLED屏显的相关知识,还培养了自己的动手能力和解决问题的能力。总的来说,这次OLED屏显实验让我受益匪浅,不仅加深了我对OLED屏幕的理解,还提升了自己的技能和解决问题的能力。OLED显示技术具有自发光的特性,采用非常薄的有机材料涂层和玻璃基板,当有电流通过时,这些有机材料就会发光,而且OLED显示屏幕可视角度大,并且能够节省电能,从2003年开始这种显示设备在MP3播放器上得到了应用。
2023-11-19 20:43:36 163
原创 IIC协议读取温湿度数据
IIC也称I2C,是一个多主从的串行总线,由飞利浦公司发明的通讯总线,属于半双工同步传输类总线,仅由两条线就能完成多机通讯,一条SCL时钟线,另外一条双向数据线SDA,IIC总线要求每个设备SCL/SDA线都是漏极开路模式,因此必须带上拉电阻才能正常工作。I2C协议占用引脚少,硬件实现简单,可扩展性强,I2C数据传输速率有标准模式(100kbps)、快速模式(400kbps)和高速模式(3.4Mbps)。
2023-11-14 19:31:32 64
原创 实验1: STM32F103的流水灯点亮版本1(寄存器地址操作)
通过操作相应的寄存器地址,我们可以控制每个GPIO引脚的电平,从而实现流水灯的点亮和熄灭。二. 以 STM32最小系统核心板(STM32F103C8T6)+面板板+3只_(或更多)红绿蓝LED 搭建电路,使用GPIOA、GPIOB、GPIOC这3个端口控制LED灯,轮流闪烁,间隔时长1秒。二. 以 STM32最小系统核心板(STM32F103C8T6)+面板板+3只_(或更多)红绿蓝LED 搭建电路,使用GPIOA、GPIOB、GPIOC这3个端口控制LED灯,轮流闪烁,间隔时长1秒。
2023-11-12 22:45:31 281
原创 定时器&PWM应用编程
本文主要通过学习定时器、中断知识与相关原理,实现稍微复杂一点的PWM呼吸灯功能,旨在通过此文掌握STM32的相关技能。二、定时器原理定时器的本身是一个计数器,他记录着时钟信号周期数,每个时钟周期都会使定时器里的计数器增加或减少,当我们知道了时钟周期的频率,算出每个时钟周期的时间,进而就可以通过定时器中的计数器进行定时的操作。定时器的模式有向上计、向下计、中心计数的模式,以向上计数为例,如下图,当计数值达到重装载值时,触发定时器中断,随后CNT继续从初始值开始计数。
2023-11-04 23:03:22 139 1
原创 基于中断/DMA方式的串口通信
(1)了解串口协议和RS-232标准,以及RS232电平与TTL电平的区别;了解"USB/TTL转232"模块(以CH340芯片模块为例)的工作原理。使用HAL库(或标准库)方式,设置USART1 波特率为115200,1位停止位,无校验位,分别采用中断方式、DMA方式完成下列任务:STM32系统给上位机(win10)连续发送“hello windows!当上位机给stm32发送字符“stop”后,stm32暂停发送“hello windows!发送一个字符“start”后,stm32继续发送;
2023-11-02 22:52:33 104
原创 使用 Makefile 编译和运行主程序和子程序
要求:子程序sub1.c 包含一个算术运算函数 float x2x(int a,int b),此函数功能为对两个输入整型参数做某个运算,将结果做浮点数返回;主程序main1.c,定义并赋值两整型变量,然后调用函数 x2x,将x2x的返回结果printf出来。通过在 Ubuntu 系统下使用 Makefile 编译主程序和子程序,了解 Makefile 的基本用法,并实现主程序调用子程序的功能。请编写一个主程序文件 main1.c 和一个子程序文件 sub1.c,并编译运行。
2023-11-01 20:17:26 120 1
原创 请编写一个主程序文件 main1.c 和一个子程序文件 sub1.c
本次实验让我学会了如何在Ubuntu中安装gcc,以及如何更高效灵活的使用来编译代码,还有在安装以及编译过程中遇到的报错如何去解决。并且学会如何使用Makefile来编译代码,并且掌握了更多得命令输入,以及两种编译方式和Windows(Visual Studio)的对比,认识到了VS编译的局限性,并且更深入的认识到了代码从编译到执行是如何进行的且如何安全高效的创建代码。
2023-11-01 20:10:18 148 1
原创 初学STM32之串口通信
新建一个子函数编写中断处理函数,其中中断处理函数的名称已经在startup_stm32f10x_hd.s中定义,只需要在该文件中找到USART1所对应的中断处理函数的名称即可。//串口初始化:波特率,数据字长,奇偶校验,硬件流控以及收发使能。//串口初始化:波特率,数据字长,奇偶校验,硬件流控以及收发使能。//接受数据,从DR读取接受到的数据。//接受数据,从DR读取接受到的数据。//清除中断状态标志位。//清除中断状态标志位。//获取中断状态标志位。//获取中断状态标志位。//发送数据到串口,DR。
2023-10-26 22:43:58 49
原创 STM32基于HAL库的LED流水灯
在进行流水灯实验时,我们需要使用单片机和 LED灯。首先,我们需要将LED 灯连接到单片机的引脚上。一般来说,我们将单片机的引脚设置为输出模式,然后将它连按到 L印D灯的正极。LED灯的负极通常不需要连接,因为 LED 灯的亮度取决手正极的电压。再加上与上次实验的对比,上一个实验自己要写的相关语句比较多,但是可以加深我们对实验的每一步的理解,本次实验与上次实验相比,大大提高了我们的开发速度和效率,不过对相应组件的掌握要求比较高,实现点灯也比较容易。
2023-10-24 21:11:21 61
原创 GCC背后的故事&C程序常量变量的地址分配
将x2x、x2y目标文件用 ar工具生成1个 .a 静态库文件, 然后用 gcc将 main函数的目标文件与此静态库文件进行链接,生成最终的可执行程序,记录文件的大小。3)将x2x、x2y目标文件用 ar工具生成1个 .so 动态库文件, 然后用 gcc将 main函数的目标文件与此动态库文件进行链接,生成最终的可执行程序,记录文件的大小,并与之前做对比。gcc 连接器是 gas 提供的,负责将程序的目标文件与所需的所有附加的目标文件连接起来,最终生。Gcc不是一个人在战斗。
2023-10-07 21:17:27 52 1
原创 STM32F103寄存器方式点亮LED流水灯
寄存器映射是在地址映射的基础上运行的。但这些单元的地址繁琐冗长容易出错,因此就以功能为名给这个内存单元取一个代号,这个别代号实质上就是寄存器名字。综上,给已分配好地址的能完成相应功能的内存单元取代号的过程就叫寄存器映射。以及寄存器的使用方式开始并不熟悉,还有GPIO端口的初始化设置和工作模式开始并没有掌握太多,最后通过查询CSDN解决掉了部分错误。 为了使CPU执行指令能够准确无误的访问正确的存储单元,需将用户程序中的逻辑地址转换为由机器直接寻址的物理地址,这一过程称为地址映射。
2023-10-07 20:25:42 164 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人