自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 AUTOSAR ETH模块(3)——接口功能分析

本文将按照我的理解,对以太网的数据发送流程进梳理,以求更容易理解整个模块、在研究接口的作用和类型之前,了解 ETH 的通信流程可以帮助我们理解接口的功能及其实现的操作。本章着重介绍与数据发送功能息息相关的接口。

2025-03-07 23:27:43 1026

原创 AUTOSAR ETH模块(2)——规范限制

首先,在包含以太网的项目中,一般会见到这几个模块一起出现:Eth, EthIf, EthTrcv, EthSwt。先介绍以下除 Eth 外的几个模块。

2025-03-01 12:34:16 922

原创 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 778

原创 VSCode离线安装插件

此时我们可以在下图位置中选择 “从VSIX安装” ,然后找到存放插件文件的路径就可以进行安装,不过大概率应该也是不能安装的(至少本人是这样的)。如下图所示,当我把鼠标放在框起来的版本号上时,vscode给了我如下提示,也就是说,我们将这个版本号改为我们所使用的vscode的版本号之后,插件才能正常使用。如果安装失败的话,基本上就是插件的版本号和所使用的vscode的版本号不一致所导致的。这里我们选择手动下载,会自动在浏览器中跳转到该插件的下载链接并自动下载插件,插件的后缀名为 .vsix。

2025-02-22 10:17:47 964

原创 AUTOSAR ETH模块(1)——通信原理

以太网设备间的连接都是由 MCU 通过 MII 和 SMI 来外接 PHY 芯片,经由 PHY 芯片将信号转换为支持网线传出的形式之后,然后才能和其他设备进行通信。LLC:(Logical Link Control)逻辑链路控制层,主要负责以太网帧的收发,还可以对以太网帧进行错误控制、流控等。填充(PAD):在有效数据少于46字节的情况下,增加的填充字节,保证数据部分的最小长度,填充字节通常是 0x00。帧起始分隔符(SFD):1字节,用于标识帧的开始,用来指示接下来是帧的实际内容。

2025-02-15 23:18:05 989

原创 EB生成配置代码

EB Tresos Studio,简称EB,通过图形化的模式进行配置生成,并根据选项配置生成配置代码,即 MCAL 层各个模块的配置参数。在 MCAL 代码中,分为静态代码和配置代码。静态代码,就是 AUTOSAR 规范内容,包含对硬件的封装以及标准化接口的封装;配置代码一般用于配置初始化结构体的内容,比如 控制器模式,波特率 等。EB生成配置代码需要三样东西:plugin,xdm,以及代码生成器。

2025-02-09 22:37:34 550

原创 AUTOSAR面试题集锦(1)基础知识

MCAL将底层硬件驱动抽象出来,对外设模块进行规范,基于Autosar规范进行驱动配置,提高了系统的可移植性、模块化和可重用性。硬件抽象:MCAL通过为硬件提供一个抽象层,使得上层的应用程序和操作系统无需直接与硬件交互,使得应用软件可以在不同的硬件平台之间更容易地迁移,无需对应用层进行大量修改。

2025-02-08 23:31:17 592

原创 基于ASRPRO的语音应答

我们需要把我们要替换的声音素材录制成wav格式,然后再天问的安装目录下有提供语音转换的程序,通过这个程序转换为mp3格式。因为我之后打算为这个语音助手添加更多的功能比如控制舵机、接入WiFi、屏幕显示等等,所以打算作为一个模块来和stm32进行连接,所以语音识别模块只完成了语音应答部分,并没有直接用它实现舵机开关的功能,但其他的像WiFi之类的这款芯片也是能实现的。这里面的播放语音id就是扩展下载来的,随机数可以在数学逻辑中找到,这里的作用是对检测到的id在选定范围内进行随机回复。

2024-09-28 23:06:13 767

原创 MQTT协议

在MQTT协议使用的过程中,服务器会保存一些重要的消息,此时cleanSession的值为flase,即保存数据,ture代表清除数据。同样的,该确认也是一个数据包,叫做CONNACK。MQTT是一种比http更简单的顶层协议,在MQTT组成的协议中,网络一般为中心分布型,所有设备节点既可能是发布者,也可能是订阅者,他们都会连在中心服务器上。发布者将需要发送的内容放在消息中发出,消息中蕴含的内容叫负载(Payload),负载一般也是字符串,发布者将消息发布后,订阅者只需要订阅该主题就能获取消息。

2024-05-23 14:14:19 522

原创 跟着野火从零开始手搓FreeRTOS(6)多优先级的配置

首先需要定义空闲任务的优先级,还要定义一个表示创建任务的最高优先级的静态变量uxTopReadyPriority,默认这个变量的值为0,即空闲任务的优先级。/* 空闲任务的优先级,task.h定义 *//* uxTopReadyPriority,定义task.c定义 */

2024-04-23 18:00:00 1146

原创 浅谈架构方法之时间片轮询

如果我们把TaskRemarks()放到SysTick的中断服务函数中,那么当这个中断执行的时候,滴答计时器的计数就会重置,同时TaskRemarks()函数也会重新执行,从而达到时间片轮询的效果。裸机系统能够处理一些相对简单的任务,但是功能单一,只会一直按顺序执行死循环里的任务,CPU只会全力做完一件事才会进行下一项任务,延时的时候也只会等待,浪费资源。操作系统的实时性和可靠性高还能同时执行多个任务,但是操作系统较为复杂,需要额外的学习成本,而且其对内存空间的要求需要我们注意内存的大小。

2024-04-22 17:06:03 1045 1

原创 c8t6+DHT11测量温湿度+串口显示

最小系统和温湿度传感器DHT11连接,并通过CH340模块在电脑串口助手上打印返回消息。

2024-04-18 18:00:00 816

原创 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 1447 1

原创 跟着野火从一开始手搓FreeRTOS(2)创建任务

任务就是无限执行的函数,在main.c中定义任务:让LED1以500ms的频率闪烁。/* 延时500个tick */LED1_OFF;/* 延时500个tick */这里的延时函数必须使用 FreeRTOS 提供的延时函数,不要使用我们裸机编程中的软件延时。vTaskDelay()会让当前任务被阻塞转而去执行其他任务;而裸机的延时会让CPU陷入死循环,一直在执行当前任务无法跳出,无法实现多任务系统。

2024-04-11 18:00:00 1158

原创 跟着野火从零开始手搓FreeRTOS(5)空闲任务与阻塞延时

栈和TCB的内存空间均在main.c中定义。任务栈是一个定义好的数组,大小由中定义的宏 控制,默认为 128, 单位为字(byte),即 512 个字节(bit)。/* 定义空闲任务的栈 *//* 在FreeRTOSConfig.h中定义 *//* 获取空闲任务的内存 *//* 在main.c中定义 *///定义空闲任务发任务控制块。

2024-04-09 18:00:00 788 1

原创 跟着野火从一开始手搓FreeRTOS(外)错误集锦

PS:本篇负责记录在移植过程中碰到的问题,会不定时更新。

2024-04-07 18:00:00 308

原创 跟着野火从一开始手搓FreeRTOS(1)FreeRTOS移植

MemMang 文件夹下存放的是跟内存管理相关的,也是直接复制即可。这五个 heap 文件在移植的时候必须使用一个,因为 FreeRTOS 在创建内核对象的时候使用的是动态分配内存,而这些动态内存分配的函数则在这几个文件里面实现,不同的分配算法会导致不同的效率与结果,这里先选用。进行了中文注释,所以我以野火采用的9.0.0版本,这个版本的源码已经在野火的资料中包含了,所以我就直接拿来用了。我是通过官网下载的。首先是source,这些源文件和两个文件夹里的文件负责操作系统与硬件间的连接,是通用的。

2024-04-06 18:00:00 1629 1

原创 跟着野火从零开始手搓FreeRTOS(4)临界段的概念及应用

在FreeRTOS中,系统调度也就是 PendSV 中断,所以对临界段的保护还是在于对中断的开和关的控制。带中断保护的开中断函数, 将上一次关中断时保存的 BASEPRI 的值作为形参 ,与 portSET_INTERRUPT_MASK_FROM_ISR()成对使用。不带中断保护的开中断函数, 直接将 BASEPRI 的值设置为 0,与portDISABLE_INTERRUPTS()成对使用。在 FreeRTOS 中,对临界段的保护出现在两种场合,一种是在中断场合一种是在非中断场合。下面是不带返回值的。

2024-04-05 20:45:00 1006 1

原创 跟着野火从零开始手搓FreeRTOS(3.2)就绪列表与调度器的实现

任务创建好之后,我们需要把任务添加到就绪列表里面, 表示任务已经就绪,系统随时可以调度。就绪列表在。

2024-04-03 18:00:00 1017 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 991 1

原创 跟着野火从零开始手搓FreeRTOS(2.3)实验演示

PS:这两天要对之前的项目进行修改,最近这几天应该不会更新下一部分的任务了。至于debug不会的兄弟,我之后会在补课专栏里稍微讲一下。这部分没什么说的,基本上就是新建上节点,插入链表中。然后在魔术棒里选择软件仿真,这点在新建工程的时候就提过了。这个实验主要是验证链表的使用,因此只要查看运行结果即可。由上图所示,我们可以发现结果和我们所设置的完全符合。

2024-03-25 23:02:25 406 1

原创 跟着野火从零开始手搓FreeRTOS(2.2)链表的初始化和插入

* 节点结构体定义 *//* 辅助值,用于帮助节点做顺序排列 */ (1)/* 指向链表下一个节点 */ (2)/* 指向链表前一个节点 */ (3)/* 指向拥有该节点的内核对象,通常是TCB */ (4)/* 指向该节点所在的链表 */ (5)/* 节点数据类型重定义 */ (6)(1)xItemValue是一个辅助值,用于帮助节点做顺序排列。该辅助值的数据类型为TickType_t。因为我们已经移植好了头文件,所以TickType_t并不会报错。

2024-03-22 22:55:16 848 1

原创 跟着野火从零开始手搓FreeRTOS(2.1)列表与列表项简介

链表首尾相连的,成一个环形,仿佛圆形的晾衣架。链表上的每个节点就像衣架上面的钩子,钩子本身没什么东西,但是可以挂很多不一样的东西,比如衣服、袜子、毛巾之类的。正如节点一样,节点指针将节点连接起来,并携带不同类型的数据挂载在链表上,数据类型可以为int、float、char等。链表常规的操作就是节点的插入和删除,为了顺利的插入,通常一条链表我们会人为地规定一个根节点,通常根节点还会有一个节点计数器,用于统计整条链表的节点个数。链表由几个节点相连而成,节点由节点指针和携带的数据组成,节点指针指向下一个节点。

2024-03-21 19:39:20 440 1

原创 跟着野火从零开始手搓FreeRTOS(1)新建工程

在MDK中新建工程,选择使用的芯片型号,我这里选的是ARM-CM3,然后在弹出来的表格中选择CMSIS下的CORE和Device下的Startup,点击OK。需要注意的是,portable内的文件是需要从野火的例程拷贝的,在第一部分的7到12的工程里都有这个文件夹,因为我对“freertos”文件夹重命名了,所以和我的名字不同。首先新建文件夹,我新建文件夹 “mine” 存放我所有的工程。在user文件夹下新建“main.c”文件并添加到user下,编写main函数并编译。至此,工程新建完成。

2024-03-20 21:39:39 314 1

原创 跟着野火从零开始手搓FreeRTOS(序)操作系统简介

这样的好处是不会丢失事件和中断,但解决任务仍是通过轮询的方式。多任务系统,是由操作系统的调度器判断执行哪个任务,每个任务都是无限循环,任务间按优先级执行,高优先级任务就绪,则放弃低优先级去执行高优先级。在本系列文章中,很多地方我会按照自己的喜好新建文件夹或者变量名之类的,看不习惯的各位可以按照原视频或者自己的喜好修改。因此,很多地方都是按照我自己的感觉来的,不习惯的朋友可以去看书和视频。PS:本人的本系列文章只是自己的感悟整理,如有问题,敬请及时提醒整改,之后可能会对本系列文章进行部分优化,欢迎大家指正。

2024-03-20 21:29:08 548 1

FreeRTOS源码v10.0.1

FreeRTOS源码v10.0.1

2025-03-08

AUTOSAR-SWS-EthernetDriver.pdf

AUTOSAR 4.4 官方以太网规范文档

2025-03-05

USART功能模板.zip

基于本例程STM32F103VET6实现以下功能: 1、通过串口1连接串口助手,定时在串口助手上打印信息; 2、借由 中断,通过串口助手输入的信息会在串口助手上显示出来 PS:本例程模板只为了移植方便,只包含串口相关功能

2024-06-24

基于stm32F1的气体监测.zip

本工程能监测温湿度、一氧化碳、汽车尾气以及PM2.5等数据,并将数据通过串口助手显示出来。 本工程基于C8T6最小系统板开发,代码亲测有效。

2024-06-15

空空如也

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

TA关注的人

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