- 博客(60)
- 收藏
- 关注
原创 第四天:CAN总线
CAN总线协议是一种专为高可靠性、实时通信设计的串行总线标准。它最初由博世公司为汽车电子系统开发,现已广泛应用于工业控制、医疗设备等诸多领域。其核心思想是创造一个共享的通信通道,让多个微控制器或设备能够可靠地交换信息,特别适合在电磁环境复杂、对安全要求严苛的场景中使用。图1 CAN总线网络拓扑图该协议采用多主架构,任何节点都可以在总线空闲时主动发送信息。
2026-01-15 14:58:52
550
1
原创 第三天:SPI总线协议
SPI(Serial Peripheral Interface,串行外设接口)是一种同步串行通信协议,广泛应用于微控制器和外设之间的通信。SPI 总线协议由 Master(主设备)和 Slave(从设备)构成,支持全双工通信,使得数据可以同时在两个方向上传输。在SPI通信中,总是由主设备控制通信过程,主设备决定何时发送数据,以及如何同步通信。从设备接收并响应主设备的请求。一个 SPI 总线上可以有多个从设备,但每个时刻只有一个主设备。SPI 是全双工的,意味着数据可以同时双向传输。
2026-01-15 14:29:37
561
原创 第二天:IIC总线协议
再其次是数据传输方式,IIC总线的数据传输是基于字节(8位)的,每次传输一个字节,数据从主机传输到从设备或从设备传输到主机。IIC协议的实现成本较低,适合用于低功耗的设备。OLED屏幕共有四个引脚,分别是VCC电源、GND地、SDA数据线、SCL时钟线,将VCC电源连接到开发板电源,将GND地连接到开发板接地端,将SDA数据线连接到开发板SDA,将SCL时钟线连接到开发板SCL。停止条件:通信结束时,主机通过将SDA线从低电平拉高到高电平,发出停止信号,表示总线的释放(SDA上升沿,SCL保持高电平)。
2026-01-15 14:29:23
667
原创 第一天:UART异步通信协议
总之,UART是一种简单而常用的串行通信协议,广泛应用于各种电子设备之间的数据传输,尤其是在资源受限的嵌入式系统中。UART(Universal Asynchronous Receiver/Transmitter)串口协议是一种常见的通信协议,用于计算机和外设之间的串行数据传输。UART是一种异步通信协议,不需要时钟信号来同步数据传输,数据传输依赖于约定好的波特率(baud rate)和其他参数。UART数据传输是以数据帧的形式进行的,每个数据帧通常包含一个起始位、数据位、可选的校验位和停止位。
2026-01-15 14:02:52
476
原创 Multisim 14.0安装后打开报错:主数据库/企业数据库/用户数据库无法访问。使用主数据库/企业数据库/用户数据库的功能将不可以用。
安装完Multisim 14.0,并重启电脑后打开软件。发现一直报错,后面重复多次发现偶尔可以使用库。就不报错了,但是一直点管理员运行比较麻烦,下面步骤就是设置Multisim 14.0软件运行时自动用管理员身份运行。查了网上很多资料,有的要修改注册表,有的要操作很麻烦,一直没有搞定。右击桌面图标>>快捷方式>>高级,勾选用管理员身份运行并确定。再次双击桌面图标打开软件,报错解决。
2025-12-01 08:17:58
374
原创 2,GUI Guider的安装与导入STM32裸机工程
我们可以从NXP的官网找到GUI Guider的安装包,截至目前为止最新的版本为v1.9.1,该版本软件支持LVGL的V3.8.10和V9.2.1。后续内容均基于V3.8.10版本进行。http://NXP官网链接下载好安装包如下,双击安装即可。
2025-09-23 16:25:57
1091
2
原创 1,LVGL(V8.3.10版本)裸机移植教程
此函数用于刷新显示函数disp_flush()中,原有LVGL自带的刷新绘制效率较低。/*** @brief LCD加速绘制函数* @param (sx,sy),(ex,ey):填充矩形对角坐标,区域大小为:(ex - sx + 1) * (ey - sy + 1)* @param color:要填充的颜色* @retval 无*/i++)
2025-09-23 12:56:57
1318
原创 25,FreeRTOS内存管理操作
FreeRTOS提供了5 种动态内存管理算法,分别为heap_1 、heap_2 、heap_3 、heap_4 和h eap_5。其各自的优缺点如下:注:所有实验均采用heap_4内存管理算法。
2025-09-19 15:24:50
847
原创 24,FreeRTOS低功耗Tickless模式
定义两个函数。// 进入低功耗前所需要执行的操作// 退出低功耗后所需要执行的操作#endif。
2025-09-19 14:20:37
683
原创 23,FreeRTOS软件定时操作
动态创建软件定时器函数xTaskCreate()。pcTimerName :软件定时器名。xTimerPeriodInTicks :定时超时时间,单位:系统时钟节拍。uxAutoReload: 定时器模式,pdTRUEpdTRUE:周期定时器,pdFALSEdFALSE:单次定时器。pvTimerID :软件定时器IDID,用于多个软件定时器公用一个超时回调函数。pxCallbackFunction :软件定时器超时回调函数。返回值:软件定时器句柄。
2025-09-19 11:28:07
628
原创 22,FreeRTOS任务通知模拟事件标志组
创建四个动态任务,栈空间大小均为128字。startTask仅运行一次,task1、task2任务的创建,startTask任务的删除。task1负责按键按下,任务通知模拟时间标志组发送。task2等待获取接收时间标志组信息。注:本实验基于正点原子FreeRTOS教程的学习总结。
2025-09-17 13:56:36
655
原创 21,FreeRTOS任务通知模拟消息邮箱
创建四个动态任务,栈空间大小均为128字。startTask仅运行一次,task1、task2任务的创建,startTask任务的删除。task1负责按键按下,任务通知模拟消息邮箱发送。task2等待获取接收邮箱信息。注:本实验基于正点原子FreeRTOS教程的学习总结。
2025-09-17 13:28:54
518
原创 20,FreeRTOS任务通知模拟信号量
创建四个动态任务,栈空间大小均为128字。startTask仅运行一次,task1、task2、task3任务的创建,startTask任务的删除。task1负责按键按下,任务通知模拟信号量发送。task2等待获取接收二值信号量。task3等待获取接收计数型信号量。注:本实验基于正点原子FreeRTOS教程的学习总结。
2025-09-17 10:58:20
548
原创 19,FreeRTOS任务通知理论
在FreeRTOS 中,每一个任务都有两个用于任务通知功能的数组,分别为任务通知数组(uint-32*)和任务通知状态数组(uint-8)。其中任务通知数组中的每一个元素都是一个32 位无符号类型的通知值;而任务通知状态数组中的元素则表示与之对应的任务通知的状态。任务通知数组:通知值0表示无任务,其他值就是任务值。任务通知状态数组:共有三种状态为未等待通知状态、等待通知状态和等待接收通知状态。其中未等待通知状态为任务通知的复位状态。其中包含的任务通知数组、 任务通知状态数组。...#endif。
2025-09-16 13:22:26
759
原创 18,FreeRTOS事件标志组操作
创建三个动态任务,栈空间大小均为128字。startTask仅运行一次,负责事件标志组的创建,task1、task2任务的创建,startTask任务的删除。Task1负责模拟事件发生,按键按下让对应事件标志组bit置一。Task2等待多事件标志,并发送提示信息。注:本实验基于正点原子FreeRTOS教程的学习总结。
2025-09-12 11:27:04
681
原创 17,FreeRTOS队列集操作
创建三个动态任务,栈空间大小均为128字。startTask仅运行一次,负责队列集、队列、二值信号量的创建,task1、task2任务的创建,startTask任务的删除。Task1(低优先级)负责队列的信息入队和二值信号量的释放。Task2(高优先级)负责队列集的接收。注:本实验基于正点原子FreeRTOS教程的学习总结。
2025-09-11 11:09:47
834
原创 16,FreeRTOS互斥信号量操作
创建四个动态任务,栈空间大小均为128字。startTask仅运行一次,负责互斥信号量的创建,task1、task2、task3任务的创建,startTask任务的删除。Task1(低优先级)负责互斥信号量的获取后绝对延时3S后释放。Task2(中优先级)负责串口打印运行状态。Task3(高优先级)负责互斥信号量的获取后绝对延时1S后释放。注:本实验基于正点原子FreeRTOS教程的学习总结。
2025-09-08 14:22:34
986
原创 15,FreeRTOS计数型信号量操作
创建三个动态任务,栈空间大小均为128字。startTask仅运行一次,负责二值信号量的创建,task1、task2任务的创建,startTask任务的删除。Task1负责计数型信号量的释放操作。Task2负责计数型信号量的获取操作、计数值的获取,并用串口发送是否获取成功。注:本实验基于正点原子FreeRTOS教程的学习总结。
2025-09-04 15:33:43
951
原创 14,FreeRTOS二值信号量操作
创建三个动态任务,栈空间大小均为128字。startTask仅运行一次,负责二值信号量的创建,task1、task2任务的创建,startTask任务的删除。Task1负责二值信号量的释放操作。Task2负责二值信号量的获取操作,并用串口发送是否获取成功。注:本实验基于正点原子FreeRTOS教程的学习总结。
2025-09-03 14:57:43
370
原创 12,FreeRTOS队列操作
创建四个动态任务,栈空间大小均为128字。startTask仅运行一次,负责两个队列的创建,task1、task2、task3任务的创建,startTask任务的删除。Task1负责两个队列的入队操作。Task2负责小数据的出队操作,并用串口发送。Task3负责大数据的出队操作,并用串口发送。注:本实验基于正点原子FreeRTOS教程的学习总结。
2025-09-02 14:26:05
798
原创 11,FreeRTOS延时函数
创建三个动态任务,栈空间大小均为128字。startTask仅运行一次,负责task1、task2任务的创建,startTask任务的删除。Task1负责相对延时函数展示。Task2负责绝对演示函数展示。注:本实验基于正点原子FreeRTOS教程的学习总结。
2025-08-22 16:26:49
519
原创 10,FreeRTOS任务运行时间统计
创建三个动态任务,栈空间大小均为128字。startTask仅运行一次,负责task1、task2任务的创建,startTask任务的删除。Task1负责1S闪烁一次,指示系统运行状态。Task2负责获取任务运行时间,并用串口发送。注:本实验基于正点原子FreeRTOS教程的学习总结。
2025-08-11 11:03:31
399
原创 9,FreeRTOS任务相关API函数
获取指定任务的运行时间、运行状态等信息,若使用此函数,需在F reeRTOSConfig.h 文件中同时设置配置项configGENERATE_RUN_TIME_STAT S 、configUSE_STATS_FORMATTING_FUNCTIONS 、configSUPPORT_DYNAMIC_ALLOCATION。获取指定任务的任务栈的历史剩余最小值,若使用此函数,需在FreeRTOSConfig.h 文件中设置配置项INCLUDE_uxTaskGetStackHighWaterMark 为1。
2025-08-11 09:56:11
667
原创 8,FreeRTOS时间片调度
创建三个动态任务,栈空间大小均为128字。startTask仅运行一次,负责task1、task2任务的创建,startTask任务的删除。Task1负责打印Task1执行次数,Task2负责打印Task1执行次数,二者优先级相同。注:本实验基于正点原子FreeRTOS教程的学习总结。时间片调度特点:1.同等优先级的任务回轮流执行;2.一个时间片的大小取决于滴答定时器的中断频率;3.没有用完的时间片(任务中,任务阻塞),下次任务执行还是一个时间片,上次剩下的时间不会补齐。
2025-07-31 09:47:11
566
原创 7,FreeRTOS列表与列表项的插入删除
创建三个动态任务,栈空间大小均为128字。startTask仅运行一次,负责task1、task2任务的创建,startTask任务的删除。Task1负责初始化列表、列表项123,并进行列表项的插入实验与删除实验。Task2负责5S闪烁一次LED0,用于指示系统的运行状态。注:本实验基于正点原子FreeRTOS教程的学习总结。
2025-06-30 11:29:08
608
原创 6,FreeRTOS临界区代码保护与任务调度器的挂起与恢复
如果我们想在执行某段代码时不被中断打断,此时需要进行临界区代码保护。在临界区内关闭中断,临界区结束后开启中断。需要注意的是临界区的进入和退出需要成对出现,如果进入两次,那么需要退出两次才可以成功开启中断。注:本实验基于正点原子FreeRTOS教程的学习总结。
2025-06-29 18:55:42
408
原创 5,FreeRTOS中断管理
创建两个动态任务,栈空间大小均为128字。startTask仅运行一次,负责task1任务的创建,startTask任务的删除。Task1负责5S关闭一次中断,5S开启一次中断。注:本实验基于正点原子FreeRTOS教程的学习总结。
2025-06-27 11:31:05
463
原创 4,FreeRTOS任务挂起与恢复
接下来进行FreeRTOS基础程序中的FreeRTOSConfig.h的修改,主要修改宏定义 INCLUDE_vTaskSuspend、INCLUDE_xTaskResumeFromISR ,另其支持任务挂起与中断恢复。系统复位后,最初以Task3、Task2、Task1的优先级进行运行,串口可以观察到系统运行的情况。xTaskResumeFromISR函数用来在中断中恢复任务,输入为任务句柄,输出为恢复任务后是否需要切换任务。
2025-06-26 11:37:54
321
原创 3,FreeRTOS创建、删除静态任务
FreeRTOS的任务主要分为动态任务、静态任务。其中动态任务时,RTOS会自动给任务分配堆栈地址、空闲函数。而静态任务时,RTOS不会自动分配,需要用户手动分配。注:本实验基于正点原子FreeRTOS教程的学习总结。静态任务与动态不同的是,静态任务不会自动创建空闲任务、软件定时任务,需要用户添加。
2025-06-24 16:54:45
997
原创 2,FreeRTOS创建、删除动态任务
FreeRTOS的任务主要分为动态任务、静态任务。其中动态任务时,RTOS会自动给任务分配堆栈地址、空闲函数。而静态任务时,RTOS不会自动分配,需要用户手动分配。注:本实验基于正点原子FreeRTOS教程的学习总结。
2025-06-23 20:06:10
545
原创 1,FreeRTOS文件介绍
STM32的FreeRTOS基础工程需要添加的内容共三个部分:freertos_demo.c、FreeRTOS_CORE、FreeRTOS_PORT。STM32的FreeRTOS基础工程结构图如下:freertos_demo.c:用户编写,用于freertos的控制。FreeRTOS_CORE:包含官方给的freertos源码,在第一章中的FreeRTOS/Source文件下的所有.c文件。是FreeRTOS的API函数。FreeRTOS_PORT:包含内存管理算法、内核链接文件。heap_4.c。
2025-06-23 18:52:56
897
原创 0,国产FPGA(紫光同创)-新建PDS工程
国产FPGA正在蓬勃发展,紫光同创FPGA是大家再竞赛经常遇到的一款国产FPGA,本专栏从IP核开始一直到后续图像处理等。开发板:盘古50K标准板。
2024-10-30 14:35:09
2131
原创 1,STM32CubeMX生成第一个freeRTOS工程
本章内容是每个CubeMX工程都需要首先配置的,后续其他外设配置中不再提及,默认已经配置好本章内容。单片机型号:STM32F407编程环境 :STM32CubeMX + Keil v5。
2024-10-09 11:23:14
3247
5
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅