- 博客(14)
- 收藏
- 关注
原创 12周嵌入式RTOS多任务程序设计
在这个项目中,我们系统地学习了嵌入式实时操作系统(RTOS),并以uc/OS-III为例进行了移植到STM32F103上的实际操作。移植过程让我们更深入地了解了RTOS的内部机制和与特定硬件平台的适配。我们成功地构建了至少3个任务(task),其中两个任务分别以1秒和3秒周期对LED进行控制,另一个任务以2秒周期通过串口发送特定的消息。这一步让我们深入了解了任务调度、任务优先级和任务间通信等概念。
2024-01-16 02:01:16
852
1
原创 stm32数字温度计
我学习到RTC核心是一个32位可编程计数器,它可以对应到Unix时间戳的秒计数器,并且具有多种时钟源选择,如HSE时钟、LSE振荡器时钟和LSI振荡器时钟。关于RTC的时钟源选择,它可以选择三种不同的源:HSE时钟除以128(通常为8MHz/128),LSE振荡器时钟(通常为32.768KHz),以及LSI振荡器时钟(40KHz)。通过这个实验,可实现对RTC和OLED屏幕的应用,以及了解如何读取STM32F103C8T6内部时钟数据和AHT20传感器的温度和湿度数据,并将它们展示在OLED屏幕上。
2023-12-16 18:24:20
1194
原创 汉字点阵与OLED屏显
在Ubuntu下用C/C++(或python) 调用opencv库编程显示一张图片,并打开一个名为"logo.txt"的文本文件(其中只有一行文本文件,包括你自己的名字和学号),按照名字和学号去读取汉字24*24点阵字形字库(压缩包中的文件HZKf2424.hz)中对应字符的字形数据,将名字和学号叠加显示在此图片右下位置。通过使用STM32F103的SPI或IIC接口实现学号、姓名、AHT20温度和湿度的显示,以及滑动显示长字符功能,我更深入地理解了OLED屏幕的显示原理和汉字点阵编码的应用。
2023-11-21 22:18:52
144
1
原创 IIC协议读取温湿度数据
此外,我了解“软件I2C”和“硬件I2C”的概念。接收一个字节:SCL低电平期间,从机将数据位依次放到SDA线上(高位先行),然后释放SCL,主机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可接收一个字节(主机在接收之前,需要释放SDA)发送一个字节:SCL低电平期间,主机将数据位依次放到SDA线上(高位先行),然后释放SCL,从机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可发送一个字节。
2023-11-21 21:08:55
688
1
原创 定时器&PWM应用编程
一. 使用STM32F103的 Tim2~Tim5其一定时器的某一个通道pin(与GPIOx管脚复用,见下图),连接一个LED,用定时器计数方式,控制LED以2s的频率周期性地亮-灭。一. 使用STM32F103的 Tim2~Tim5其一定时器的某一个通道pin(与GPIOx管脚复用,见下图),连接一个LED,用定时器计数方式,控制LED以2s的频率周期性地亮-灭。选中定时器2,配置定时器2的时钟源为内部时钟,分频系数为71,向上计数模式,计数周期为5000,使能自动重载模式。设置占空比初始值为10。
2023-11-04 23:03:23
116
1
原创 基于中断/DMA方式的串口通信
最被广泛使用的是RS-232C,它将mark(on)比特的电压定义为-3V到-12V之间,而将space(off)的电压定义到+3V到+12V之间。我们学习了"USB/TTL转232"模块(以CH340芯片模块为例)的工作原理,并成功设置了USART1波特率为115200,1位停止位,无校验位。异步串行:数据传输以单个字符为单位,字符和字符之间的间隙任意,字符内部每一位持续的时间相同。同步串行:数据传输以数据块(一组字符)为单位,在一个数据块内,字符与字符间无间隔,收发双方依靠独立的时钟线进行信号的同步。
2023-11-02 22:16:28
245
1
原创 STM32串口通信入门
首先应该选择Use Simulator,其次是Run to main()选项打钩,然后分别修改上图中的 3 、4、5 、6, 注意, 3和5在STM32的单片机中应该都是固定的,但是4和6是跟你所采用的具体某一款单片机是对应的。使用Keil的软件仿真逻辑分析仪功能观察串口输出波形并分析时序状态正确与否,计算波特率实际值:这一部分的目的是让您了解如何使用Keil的软件仿真逻辑分析仪功能来观察串口输出的波形,并通过分析时序状态来判断波特率设置是否正确。根据需求选择合适的引脚,并将其设置为 USART1。
2023-10-26 23:10:39
143
1
原创 基于HAL库的LED流水灯
同时,通过中断编程模式实现流水灯闪烁的功能,掌握了如何使用中断控制器(NVIC)来管理中断,并在中断服务函数(ISR)中实现相应的功能。通过观察使用Keil的软件仿真逻辑分析仪功能得到的波形图,我发现流水灯的输出波形时序状态正确,高低电平转换周期(LED闪烁周期)为约1秒左右。采用中断模式编程,当开关接高电平时,LED流水灯工作;然后配置GPIO,本实验选择PA5、PB0、PC14点击右侧芯片,找到所需要的端口,并将其设置为GPIO_Output,然后修改Pin脚的电平,将其设置为高电平。
2023-10-24 22:11:34
91
原创 基于标准外设库的LED流水灯
固件库\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\。总而言之,通过这次实验,我不仅学习了如何搭建电路并控制LED灯的闪烁,还了解了软件循环延时函数的应用和Keil的仿真功能的使用方法。通过使用Keil的软件仿真逻辑分析仪功能,我们能够方便地观察管脚的时序波形,并对GPIO端口的输出进行分析。
2023-10-16 20:42:46
89
1
原创 GCC背后的故事&C程序常量变量的地址分配
它支持相当多的目标文件格式,包括Linux和’‘NetBSD/FreeBSD’’,’‘a.out’’,’‘ELF’’,’‘COFF’’,微软16位的’‘OBJ’‘和’‘Win32’’。gcc –L /usr/dev/mysql/lib –lmysqlclient test.o –o test //这里的路径,若不写,则默认在/usr/lib。gcc –L /usr/dev/mysql/lib –static –lmysqlclient test.o –o test //-static 静态。
2023-10-06 21:11:08
75
1
原创 实验1: STM32F103的流水灯点亮版本1(寄存器地址操作)
通过本次实验我掌握通过STM32最小系统核心板搭建电路的方法,通过GPIOA、GPIOB、GPIOC三个端口控制三只LED灯的闪烁,闪烁间隔为1秒。并熟悉了配置GPIO端口的工作模式和输出模式。在本实验中,使用的是推挽输出模式。然后,需要设置GPIO端口的输出速度。在本实验中,使用的是中速输出模式。接下来,需要设置GPIO端口的输出状态。通过设置GPIO端口的寄存器来实现LED灯的亮灭控制。最后,为了实现轮流闪烁,可以使用延时函数来控制LED灯的亮灭状态切换。
2023-10-04 20:46:19
224
1
原创 STM32/51单片机编程入门(点亮LED)
在完成上述实验任务的过程中,我学到了很多关于嵌入式系统和STM32芯片的知识。以下是我的实验总结和心得体会:Proteus电路仿真软件:安装和熟悉Proteus软件是为了进行C51程序设计和仿真。Proteus提供了一个虚拟环境来测试和调试嵌入式系统设计。通过使用Proteus,我能够验证我的C51程序的正确性,并确保硬件的稳定性和可靠性。MDK开发环境和STM32芯片:安装mdk5软件和stm32包后,我熟悉了mdk开发环境,并学会了使用寄存器方式进行STM32的编程。
2023-09-26 22:01:36
125
原创 使用 Makefile 编译和运行主程序和子程序
通过本次实验,我们学会了使用 Makefile 在 Ubuntu 系统下编译和运行 C 语言程序。通过设置编译规则,我们实现了自动化的编译过程,简化了编译命令的输入。
2023-09-15 18:28:06
266
1
原创 请编写一个主程序文件 main1.c 和一个子程序文件 sub1.c
通过本次实验,我们了解了在 Ubuntu 系统下使用 C 语言编写并运行一个简单的程序的过程。我们学会了创建新的 C 文件、编写代码、保存文件、使用 gcc 命令行编译程序以及运行程序。这是初步步入 C 语言编程世界的第一步,为后续的学习和开发打下了基础。
2023-09-15 18:13:23
141
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人