自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 嵌入式RTOS多任务程序设计

uC/OS-III是一个基于优先级的实时内核,全称为Micro C OS Three,即微型的C语言编写的操作系统第三版。它是在总结用户使用uC/OS-II反馈和经验的基础上诞生的,相比于uC/OS-II删除和更新一些少用的功能,添加更加高效的功能和服务。其中最有用的功能就是时间片轮转法(round robin),该功能是uC/OS-III特有的。uC/OS-III是一个抢占式内核,这意味着它总是执行最重要的就绪任务。此外,uC/OS-III内核也负责管理任务间的交流,系统的资源(内存和I/O)。

2023-11-25 23:27:05 118

原创 STM32实现数字温度计

STM32F103的RTC(Real-Time Clock)是一个实时时钟模块,它提供了在微控制器系统中实现实时时钟功能的基本功能。它一个独立的BCD定时器/计数器,通过APB1接口进行配置和访问。它具有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。RTC是个独立的定时器。RTC模块拥有一个连续计数的计数器,在相应的软件配置下,可以提供时钟日历的功能。修改计数器的值可以重新设置当前时间和日期 RTC还包含用于管理低功耗模式的自动唤醒单元。

2023-11-21 20:23:08 429

原创 利用STM32实现OLED显示相关信息

SPI(Serial Peripheral Interface)是一种常用的串行通信接口,用于在微控制器和外部设备之间传输数据。SPI 接口主要应用在 EEPROM,FLASH,实时时钟,AD 转换器,还有数字信号处理器和数字信号解码器之间。SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为 PCB 的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,STM32 也有 SPI 接口。

2023-11-19 22:26:54 78

原创 串口传输文件

在这个实验中,学习了如何实现电脑间传输文件,并将不同比特率下的传输速度进行比较,发现当比特率变大的时候,传输时间变小,传输速度会加快,更加详细的比较还需要做更多的实验来进行验证。总之,在这个实验中我学到了很多,收获了很多。

2023-11-19 16:46:29 78

原创 汉字点阵与OLED屏显

在本文章中学习了国标码、区位码、机内码三者的相关知识,并介绍了三者之间的转换关系。然后还学习了如何在Ubuntu下利用opencv库用汉字点阵显示自己的名字和学号,虽然在过程中出现了失误,但是经过查阅相关知识最终解决了问题,总之,这次学习收获非常大,学习了汉字点阵的原理,这对之后的实验具有重要作用。

2023-11-19 16:15:37 93

原创 基于I2C协议的AHT20温湿度传感器的数据采集

I2C总线是Philips公司在八十年代初推出的一种串行、半双工的总线,主要用于近距离、低速的芯片之间的通信;I2C总线有两根双向的信号线,一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步;I2C总线硬件结构简单,简化了PCB布线,降低了系统成本,提高了系统可靠性,因此在各个领域得到了广泛应用。I2C总线是一种多主机总线,连接在 I2C总线上的器件分为主机和从机。主机有权发起和结束一次通信,从机只能被动呼叫;

2023-11-12 12:56:09 763 1

原创 STM32定时器及PWM实现呼吸灯

这篇文章介绍了STM32定时器的相关知识,以及脉宽调制PWM的相关知识,然后在基于这些知识点的基础上利用标准库完成了周期性电灯以及点亮呼吸灯的工程。学习了对定时器及相关参数的设置,我发现不仅可以实现呼吸灯,还可以自行调节频率及占空比灯值来达到其他效果。在工程中创建的PWM函数还可以用到其他工程中去,直接调用比较方便,直接更改参数的值就可以了。总之在这次作业中我收获的还是比较多的,还有其余不足的地方需要花费时间去学习。

2023-11-04 16:56:12 860 2

原创 基于中断/DMA模式的串口通信

这篇文章主要介绍了用HAL库实现串口通信的两种方式:中断方式和DMA方式,介绍了这两种方式的区别,以及如何利用stm32CubeMX软件建立工程来采用这两种的方式来实现串口通信。在这个实验中比较困难的一点是,在之前的作业中,通过用不同的字符来改变发送的停止与进行,这个的控制比较简单,直接可以根据输入在while循环中设置函数。但是这个实验要求的是发送一个字符串,相对于单个字符比较难,这里我设置了一个函数,通过比较输入的内容与设定的内容是否一致,来判断输入的语句是什么,从而控制串口的发送与停止。

2023-10-30 20:17:54 241 1

原创 STM32使用HAL库控制串口

CH340是一个USB总线的转接芯片,实现USB转串口或者USB转打印口。在串口方式下,CH340提供常用的MODEM联络信号,用于为计算机扩展异步串口,或者将普通的串口设备直接升级到USB总线。它可以实现单片机与PC端的通信。在这个作业中学习了串口协议以及RS-232标准,还有RS232电平和TTL电平的区别,然后还了解了USB转TTL的工作原理,之后是进行实例的学习,运用到了HAL库,完成了发送并运用串口工具接收一串字符的任务,同时也通过对发送的字符的设置来控制上机位发送的停止和开始。

2023-10-26 19:56:52 610

原创 基于HAL库的LED流水灯

这篇文章介绍了如何运用软件stm32CubeMX创建工程,并利用HAL库实现LED流水灯的工作,也介绍了如何运用中断模式编程来控制灯的亮灭。对比于之前利用标准库来实现流水灯,会发现,这里的工作要简单一点,直接把对应的设置好后,就可以生成响应的工程,然后直接修改代码就可以了,而HAL库函数的使用和标准库存在一定的相似之处。但是在烧录的时候会出现一些问题,需要注意BOOT0以及BOOT1的状态,否则会导致烧录不成功。

2023-10-21 16:11:00 114 1

原创 基于标准外设库的LED流水灯

这次实验基于标准外设库来点亮LED灯,来实现流水灯,对比实验一中采用寄存器的方式点亮LED灯,可以很明显的发现,采用固件库的方式来完成更加的简单方便,在代码编写的过程中,大部分都有固定的模板,只需要区其他函数中调用即可,在工程建立前只需要将所需要的文件整理好,在工程建立好之后就可以很快的将文件添加进去不需要对照着一个一个确定GPIO口的状态,节省了很多时间,也减少了出错率。

2023-10-13 17:05:26 49

原创 Ubuntu、stm32下的C程序中堆、栈、全局、局部等变量的地址分配问题

本文章举例说明了在Ubuntu和stm32下,C程序的地址分配问题,发现了二者栈区和堆区的地址值的变化是有所不同的,在这两个例子中,Ubuntu系统下,栈区和堆区的地址值从上到下都是递增的,而在stm32中栈区的地址值是从上到下递减的,堆区的地址值则是从上到下递增的,存在差异,想要观察出变化,还需要动手用程序做更多的证明。

2023-10-05 20:50:34 168

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

本文章学习的.a静态库文件和.so动态库文件的生成和使用,并将二者进行了对比,可以知道当静态库文件和动态库文件同名时,优先使用动态库文件。在学习的过程中出现了一点困难,当按照步骤一步一步来的时候会解决问题,也会越来越熟练。

2023-10-05 11:46:26 48

原创 STM32最小系统板实现LED流水灯

在此次实验中,我学会了如何利用STM32F103C8T6最小系统板,并且运用寄存器的方式来点亮LED灯,然后实现流水灯,在此次实验,我设计的是三个LED灯的流水灯,这次试验之后,运用相同的方法,我们还可以设计采用更多的LED来实现流水灯。同时这次试验还让我对寄存器的使用更加了解,是在之前的作业中没有学会的,在这次实验花费了大量的时间去了解,去学习,也为接下来的作业打基础。

2023-10-01 18:36:49 1082

原创 STM32/51单片机编程点亮LED

代码编写完成后,需要将其与工程建立联系,先右键点击”Source Group 1",然后将文件添加到里面。P0=P0|0x01;打开软件,点击”project“,然后创建新的工程,然后在工程中新建一个文件,进行代码。在仿真电路图中双击单片机,找到Keil中导出的“.hex”文件的路径,并点击上传。建立好链接后,运行代码,并检测代码的正确性,检查无误后需要输出“.hex”文件。文件上传后,点击软件左下角小三角,进行运行,可以观察到小灯轮流亮。安装好Proteus后,打开软件,建立新的工程。

2023-09-24 15:44:45 186 1

原创 Ubuntu系统下用gcc和Makefile以及在Windows系统下用c++编写函数运算程序

通过三者的比较,我发现在Ubuntu系统下,采用gcc进行编译,我可以清楚的知道文件是怎样一步步转化为可执行的文件,过程跟加直观,更易于理解,但是当程序包中有多个源文件时,用gcc就会变得比较混乱复杂,这时候就会用到Make工具,可以编译多个源文件,通过Makefile 文件对多个源程序进行编译和链接,最后得到结果,我们可以根据实际情况选择合适的编译工具。将“.s”文件转化为目标文件“.o”。命令:gcc -c hello.s -o hello.o。指令:gcc -c sub1.s -o sub1.o。

2023-09-15 17:06:04 247 3

空空如也

空空如也

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

TA关注的人

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