- 博客(27)
- 收藏
- 关注
原创 从零开始掌握FreeRTOS(4)任务的动态和静态创建
前面我们已经梳理了 FreeRTOS 中链表的相关内容,从本篇开始,我们将学习什么是任务,以及动态和静态创建任务的方法。
2025-05-16 12:46:12
660
原创 从零开始掌握FreeRTOS(2)链表之节点的定义
在上篇文章,我们完成了 FreeRTOS 的移植。在 FreeRTOS 中,所有功能被划分为任务。而任务则需要挂载链表上面。在本章,我们将掌握链表的各种节点类型。
2025-05-13 17:27:12
932
原创 从零开始掌握FreeRTOS(序)裸机与RTOS的区别
RTOS,是中文名叫做 实时操作系统 ,这个专栏的主要内容则是掌握 FreeRTOS 。接下来,我们来对比一下它和裸机系统的区别,以及了解RTOS的优势,让我们清晰地认识到为什么要学习RTOS。
2025-05-12 16:26:48
730
原创 UDS全诊断服务解析
UDS名词解释及分析-优快云博客UDS诊断共分为6大类28种服务。通过UDS实现对汽车的数据读取以及保存故障环境及其详细数据等。
2025-04-13 13:22:06
62
原创 UDS名词解释及分析
UDS诊断可以看作是ECU与外部诊断设备间通讯的桥梁,国际标准(ISO14229)中定义了UDS的大致框架,共分为6大类28种服务。我们可以通过UDS实现对汽车包括但不限于 功能监控 、故障检测 、记录并存储故障信息 、读取数据 等功能。在实际使用上,当汽车出现故障时,维修工人们可以通过 UDS 诊断来甄别故障类型,并得知故障发生在什么条件下。因此,UDS 在汽车行业中十分重要。UDS所有诊断服务如下图所示。
2025-04-12 13:10:28
893
原创 AUTOSAR ETH模块(3)——接口功能分析
本文将按照我的理解,对以太网的数据发送流程进梳理,以求更容易理解整个模块、在研究接口的作用和类型之前,了解 ETH 的通信流程可以帮助我们理解接口的功能及其实现的操作。本章着重介绍与数据发送功能息息相关的接口。
2025-03-07 23:27:43
1124
原创 AUTOSAR ETH模块(2)——规范限制
首先,在包含以太网的项目中,一般会见到这几个模块一起出现:Eth, EthIf, EthTrcv, EthSwt。先介绍以下除 Eth 外的几个模块。
2025-03-01 12:34:16
951
原创 AUTOSAR SENT模块(1)——通信原理
SENT(single edge nibble transmission),单边半字节信号传输。在 AUTOSAR 规范中,SENT并没有明确的标准,因此将其归类为 CDD(复杂驱动)模块。SENT 是一种 MCU 和传感器之间直接连接的点对点通信方式,其结构简单,除了一根数据线之外,还由 5V供电和GND 三根线构成。由于 SENT 特殊的信号传输方式,使其传输信号的精度更高。总结来讲,SENT有以下优点:1. 采用数字信号传输,使得精度和传输速度更高;2. 结构简单,成本低。
2025-02-22 13:01:15
836
原创 VSCode离线安装插件
此时我们可以在下图位置中选择 “从VSIX安装” ,然后找到存放插件文件的路径就可以进行安装,不过大概率应该也是不能安装的(至少本人是这样的)。如下图所示,当我把鼠标放在框起来的版本号上时,vscode给了我如下提示,也就是说,我们将这个版本号改为我们所使用的vscode的版本号之后,插件才能正常使用。如果安装失败的话,基本上就是插件的版本号和所使用的vscode的版本号不一致所导致的。这里我们选择手动下载,会自动在浏览器中跳转到该插件的下载链接并自动下载插件,插件的后缀名为 .vsix。
2025-02-22 10:17:47
1142
原创 AUTOSAR ETH模块(1)——通信原理
以太网设备间的连接都是由 MCU 通过 MII 和 SMI 来外接 PHY 芯片,经由 PHY 芯片将信号转换为支持网线传出的形式之后,然后才能和其他设备进行通信。LLC:(Logical Link Control)逻辑链路控制层,主要负责以太网帧的收发,还可以对以太网帧进行错误控制、流控等。填充(PAD):在有效数据少于46字节的情况下,增加的填充字节,保证数据部分的最小长度,填充字节通常是 0x00。帧起始分隔符(SFD):1字节,用于标识帧的开始,用来指示接下来是帧的实际内容。
2025-02-15 23:18:05
1036
原创 EB生成配置代码
EB Tresos Studio,简称EB,通过图形化的模式进行配置生成,并根据选项配置生成配置代码,即 MCAL 层各个模块的配置参数。在 MCAL 代码中,分为静态代码和配置代码。静态代码,就是 AUTOSAR 规范内容,包含对硬件的封装以及标准化接口的封装;配置代码一般用于配置初始化结构体的内容,比如 控制器模式,波特率 等。EB生成配置代码需要三样东西:plugin,xdm,以及代码生成器。
2025-02-09 22:37:34
622
原创 AUTOSAR面试题集锦(1)基础知识
MCAL将底层硬件驱动抽象出来,对外设模块进行规范,基于Autosar规范进行驱动配置,提高了系统的可移植性、模块化和可重用性。硬件抽象:MCAL通过为硬件提供一个抽象层,使得上层的应用程序和操作系统无需直接与硬件交互,使得应用软件可以在不同的硬件平台之间更容易地迁移,无需对应用层进行大量修改。
2025-02-08 23:31:17
699
原创 基于ASRPRO的语音应答
我们需要把我们要替换的声音素材录制成wav格式,然后再天问的安装目录下有提供语音转换的程序,通过这个程序转换为mp3格式。因为我之后打算为这个语音助手添加更多的功能比如控制舵机、接入WiFi、屏幕显示等等,所以打算作为一个模块来和stm32进行连接,所以语音识别模块只完成了语音应答部分,并没有直接用它实现舵机开关的功能,但其他的像WiFi之类的这款芯片也是能实现的。这里面的播放语音id就是扩展下载来的,随机数可以在数学逻辑中找到,这里的作用是对检测到的id在选定范围内进行随机回复。
2024-09-28 23:06:13
998
原创 MQTT协议
在MQTT协议使用的过程中,服务器会保存一些重要的消息,此时cleanSession的值为flase,即保存数据,ture代表清除数据。同样的,该确认也是一个数据包,叫做CONNACK。MQTT是一种比http更简单的顶层协议,在MQTT组成的协议中,网络一般为中心分布型,所有设备节点既可能是发布者,也可能是订阅者,他们都会连在中心服务器上。发布者将需要发送的内容放在消息中发出,消息中蕴含的内容叫负载(Payload),负载一般也是字符串,发布者将消息发布后,订阅者只需要订阅该主题就能获取消息。
2024-05-23 14:14:19
528
原创 跟着野火从零开始手搓FreeRTOS(6)多优先级的配置
首先需要定义空闲任务的优先级,还要定义一个表示创建任务的最高优先级的静态变量uxTopReadyPriority,默认这个变量的值为0,即空闲任务的优先级。/* 空闲任务的优先级,task.h定义 *//* uxTopReadyPriority,定义task.c定义 */
2024-04-23 18:00:00
1167
原创 浅谈架构方法之时间片轮询
如果我们把TaskRemarks()放到SysTick的中断服务函数中,那么当这个中断执行的时候,滴答计时器的计数就会重置,同时TaskRemarks()函数也会重新执行,从而达到时间片轮询的效果。裸机系统能够处理一些相对简单的任务,但是功能单一,只会一直按顺序执行死循环里的任务,CPU只会全力做完一件事才会进行下一项任务,延时的时候也只会等待,浪费资源。操作系统的实时性和可靠性高还能同时执行多个任务,但是操作系统较为复杂,需要额外的学习成本,而且其对内存空间的要求需要我们注意内存的大小。
2024-04-22 17:06:03
1082
1
原创 stm32报错问题集锦
而STM32F103VE的FLASH在128到256之间,所以最开始的启动文件是带hd的。上图显示的报错是ADC的中断相关部分出了问题,但实际上这个报错的原因是不同型号的芯片之间,他们的FLASH即闪存大小不同导致的。低容量:16KB 、32KB ,选择 startup_stm32f10x_ld.s 或 startup_stm32f10x_ld_vl.s。中容量 :64KB、128KB ,选择 startup_stm32f10x_md.s 或 startup_stm32f10x_md_vl.s。
2024-04-13 23:42:47
1544
1
原创 跟着野火从一开始手搓FreeRTOS(2)创建任务
任务就是无限执行的函数,在main.c中定义任务:让LED1以500ms的频率闪烁。/* 延时500个tick */LED1_OFF;/* 延时500个tick */这里的延时函数必须使用 FreeRTOS 提供的延时函数,不要使用我们裸机编程中的软件延时。vTaskDelay()会让当前任务被阻塞转而去执行其他任务;而裸机的延时会让CPU陷入死循环,一直在执行当前任务无法跳出,无法实现多任务系统。
2024-04-11 18:00:00
1173
原创 跟着野火从零开始手搓FreeRTOS(5)空闲任务与阻塞延时
栈和TCB的内存空间均在main.c中定义。任务栈是一个定义好的数组,大小由中定义的宏 控制,默认为 128, 单位为字(byte),即 512 个字节(bit)。/* 定义空闲任务的栈 *//* 在FreeRTOSConfig.h中定义 *//* 获取空闲任务的内存 *//* 在main.c中定义 *///定义空闲任务发任务控制块。
2024-04-09 18:00:00
812
1
原创 跟着野火从零开始手搓FreeRTOS(4)临界段的概念及应用
在FreeRTOS中,系统调度也就是 PendSV 中断,所以对临界段的保护还是在于对中断的开和关的控制。带中断保护的开中断函数, 将上一次关中断时保存的 BASEPRI 的值作为形参 ,与 portSET_INTERRUPT_MASK_FROM_ISR()成对使用。不带中断保护的开中断函数, 直接将 BASEPRI 的值设置为 0,与portDISABLE_INTERRUPTS()成对使用。在 FreeRTOS 中,对临界段的保护出现在两种场合,一种是在中断场合一种是在非中断场合。下面是不带返回值的。
2024-04-05 20:45:00
1019
1
原创 跟着野火从零开始手搓FreeRTOS(3.2)就绪列表与调度器的实现
任务创建好之后,我们需要把任务添加到就绪列表里面, 表示任务已经就绪,系统随时可以调度。就绪列表在。
2024-04-03 18:00:00
1038
1
原创 跟着野火从零开始手搓FreeRTOS(3.1)任务的了解与创建
我们要实现两个变量按照一定的频率轮流的翻转,每个变量对应一个任务,所以需要定义两个任务栈。任务栈其实就是一个预先定义好的全局数据,我们可以直接在main.c中定义,也可以放在FreeROS.h中。我这里是放在了main.c中。任务栈(TaskxStack)数据类型为StackType_t,大小由 TASK1_STACK_SIZE 这个宏来定义,默认为 128,单位为字,即 512字节,这也是 FreeRTOS 推荐的最小的任务栈。
2024-04-01 18:00:00
1027
1
USART功能模板.zip
2024-06-24
基于stm32F1的气体监测.zip
2024-06-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人