- 博客(51)
- 收藏
- 关注
原创 进阶——第十六蓝桥杯嵌入式熟练度练习(串口的小BUG补充-字符接受不完整和字符接受错误)
假如没接受完成,执行函数,就可能会把count直接清零,就会重新接受\2.解决接受错误下一次不能执行的问题滴答时钟主函数定义 串口执行函数超时清零函数 中断回调
2025-02-13 22:16:39
394
原创 嵌入式杂谈-- C语言中结构体和枚举的区别
在 C 语言编程的世界里,结构体(struct)和枚举(enum)是两个极为重要的工具,它们虽都用于组织数据,却有着截然不同的特性与用途。
2025-01-20 23:44:21
288
原创 进阶——第十六届蓝桥杯熟练度练习(串口)
在C或C++语言中,当使用这样的表达式,其中rx_data被定义为uint8_t(通常是的别名),之所以可以与字符进行比较,是因为发生了隐式类型转换。字符的存储本质:在计算机中,字符是以整数编码的形式存储的。常见的编码方式如ASCII编码,每个字符都对应一个唯一的整数值。例如,字符'c'在ASCII编码中对应的值是99。隐式类型转换:在C和C++中,当进行比较操作时,如果比较双方的类型不同,会发生隐式类型转换。在这个表达式中,字符'c'会被隐式转换为uint8_t类型(因为。
2025-01-19 21:10:30
662
原创 嵌入式杂谈——什么是DMA?有什么用?
在嵌入式系统和计算机体系结构中,是一种重要的数据传输技术。它允许外设(如UART、SPI、ADC等)直接与内存进行数据交换,而无需CPU的干预。DMA技术可以显著提高系统的效率和性能,尤其是在需要高速数据传输的场景中。本文将详细解释DMA的工作原理、优势、应用场景以及如何使用DMA。
2025-01-17 23:55:35
1082
原创 嵌入式杂谈——(问题解决三:嵌入式中的数据类型)
嵌入式系统中浮点运算通常较慢,且某些低端微控制器可能不支持硬件浮点单元(FPU),因此浮点类型的使用需要谨慎。这些是 C 语言中的标准数据类型,但其大小可能因平台而异,因此在嵌入式系统中使用时需要谨慎。头文件中,用于明确指定数据的位数,适合嵌入式系统中需要精确控制数据大小的场景。指针的大小依赖于架构(例如 8 位、16 位、32 位或 64 位微控制器)。指针用于直接访问内存地址,在嵌入式系统中常用于操作硬件寄存器或动态内存管理。通常用 8 位存储,但实际只使用 1 位。节省内存,但访问效率可能较低。
2025-01-16 20:58:16
835
原创 嵌入式杂谈(问题解决二:位运算符在嵌入式编程中的应用)
将二进制位向右移动,左侧补0(逻辑右移)或补符号位(算术右移)。:两个操作数的对应位有一个为1时,结果的该位为1,否则为0。:两个操作数的对应位都为1时,结果的该位为1,否则为0。:两个操作数的对应位不同时,结果的该位为1,否则为0。:对操作数的每一位取反,1变0,0变1。:将二进制位向左移动,右侧补0。
2025-01-15 23:49:18
260
原创 进阶——十六届蓝桥杯嵌入式熟练度练习(LCD显示屏)
初始化 LCD 显示屏。通常包括配置硬件接口(如 SPI、I2C 或并行接口)、设置显示参数(如分辨率、颜色模式)以及清屏等操作。:设置文本显示的颜色。Color参数通常是一个 16 位的 RGB 值(如 RGB565 格式)。:设置文本背景的颜色。Color参数也是一个 16 位的 RGB 值。:清除 LCD 上指定的某一行。Line参数表示要清除的行号。:清除整个 LCD 屏幕,并用指定的颜色填充。Color参数是填充的颜色值。:设置光标位置。Xpos和Ypos。
2025-01-14 22:52:50
403
原创 freertos的基础(二)内存管理:堆和栈
堆是 FreeRTOS 中用于动态内存分配的内存区域。FreeRTOS 提供了多种堆管理方案(如 heap_1、heap_2、heap_4 等),开发者可以根据需求选择合适的内存管理策略。栈是每个任务独立拥有的内存区域,用于存储任务的局部变量、函数调用信息、中断上下文等。堆:用于动态内存分配,全局共享,由 FreeRTOS 管理。低地址,内存增长方向向上。栈:用于任务运行时存储临时数据,每个任务独立拥有。高地址,内存增长方向向下。
2025-01-13 18:24:17
1097
原创 进阶——十六届蓝桥杯嵌入式熟练度练习(LED的全开,全闭,点亮指定灯,交替闪烁,PWM控制LED呼吸灯)
如图GPIO_PIN_ALL为0XFF,则让所有的GPIOC引脚置高电平。则让所有的LED全开。
2025-01-12 23:17:35
212
原创 蓝桥杯—STM32G431RBT6(IIC通信--EEPROM(AT24C02)存储器进行通信)
IIC (IIC 是半双工通信总线。半双工意味着数据在某一时刻只能沿一个方向传输,即发送数据的时候不能接收数据,接收数据的时候不能发送数据)即集成电路总线(Inter-Integrated Circuit),是一种多主机的串行通信总线.它由飞利浦公司在 20 世纪 80 年代开发,主要用于连接微控制器及其外围设备。IIC 总线具有简单、高效、支持多设备连接等特点,在电子电路设计中被广泛应用。“一主多从” 是一种通信架构模式。在这种模式中,有一个主要的设备(称为主设备),它具有控制和发起通信的能力;
2024-10-02 00:00:31
1722
1
原创 蓝桥杯—STM32G431RBT6(RTC时钟获取时间和日期)
在LCD函数中获取值注意,两个都要获取一下,不然容易出毛病 在LCD中显示四、开源代码通过网盘分享的文件:19-TEST9-RTC实时时钟.zip链接: https://pan.baidu.com/s/150G8rln1ZEBG1QCZBqrMAQ?pwd=0820 提取码: 0820
2024-09-29 00:25:17
2051
原创 蓝桥杯—STM32G431RBT6(TIM定时器输入捕获频率和占空比)
输入捕获能够对输入信号的上升沿和下降沿进行捕获,并且记录下捕获时定时器的数值以及触发中断。根据功能分为两类:普通输入捕获(只能测频率)PWM输入模式(可以测频率和占空比)(双通道)如图有两个信号发生器,R40和R39可调整信号发生器的频率,PA15和PB4可设置为定时器输入捕获模式,用于采集他所发出的信号 开启定时器中断回调函数LCD显示 三、效果展示通过网盘分享的文件:18-TEST8-TIM输入频率和占空比.zip链接: https://pan.baidu.
2024-09-28 15:24:35
1147
原创 蓝桥杯--STM32G431RBT6(TIM定时器的输出频率和占空比,含详细原理介绍和使用方法)
ARR 即自动重装载值(Auto Reload Register)。相当于一个水杯,水杯容量,水满为一个周期,倒掉重新滴水。它是一个用于指定特定数值的参数,该数值将在特定操作或过程中被自动重新装载或重置,以确保相关功能的持续运行或周期性执行。“CCRx” 通常指的是捕获 / 比较寄存器 X(Capture/Compare Register X)。相当于刻度线。这些寄存器用于定时器的功能配置,如捕获输入信号、产生输出波形等。“CNT” 一般指计数器(Counter)。相当于一水滴。
2024-09-27 00:18:25
1788
原创 蓝桥杯—STM32G431RBT6(ADC数模转换,从原理到应用)
double是双精度浮点数,是一种计算机数据类型。它具有更高的精度和范围,能表示比单精度浮点数更精确的小数。这两行代码是在对获取到的 ADC 值进行进一步的计算和转换。getADC2()和getADC1()获取到的是经过 ADC 转换后的数值,然后分别乘以3.2/4096,可能是为了将 ADC 值转换为实际的电压值。%.2f表示以保留的浮点数形式输出电压值两位小数。
2024-09-21 16:43:40
1574
原创 蓝桥杯-STM32G431RBT6(UART解析字符串sscanf和解决串口BUG)
链接: https://pan.baidu.com/s/1s-FNqcBW1CerVNHGyEfvuQ?pwd=0820 提取码: 0820。假如没接受完成,执行函数,就可能会把count直接清零,就会重新接受。中的含义是:读取最多 4 个字符并将其存储为字符串。它确保读取的字符串长度不超过 4 个字符。通过网盘分享的文件:串口.zip。:这是一个定义的函数,名为。
2024-09-18 00:02:13
1002
原创 蓝桥杯-STM32G431RBT6(串口)
这行代码使用sprintf函数将字符串写入到tx_buf缓冲区中。:这行代码使用函数通过huart1串口发送tx_buf缓冲区中的数据。发送的数据长度是通过计算得到的,并且设置了一个超时时间为50毫秒。&huart1是指向huart1这个结构体的指针。huart1通常是一个串口通信相关的结构体,通过这个指针可以访问和操作与该串口相关的配置和功能将tx_buf强制转换为(uint8_t*)是为了确保将缓冲区中的数据以字节数组的形式传递给函数。
2024-09-17 17:25:40
1356
原创 蓝桥杯-STM32G431RBT6(解决LCD与LED引脚冲突的问题)
LCD与LED引脚共用。网上文章是在LCD_WriteRAM、LCD_WriteRAM_Prepare、LCD_WriteReg中添加,但问题并没有解决。
2024-09-16 23:08:22
884
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人