自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一棵“树”看懂Autosar软件架构

Autosar官方文档中对于软件架构的分层是一个水平分层的结构,这种结构对于纯小白来说可能并不是太友好,那么我们不妨换一种思路,把Autosar的软件架构看作一棵树,正是树中的各个系统,确保了树的正常生长,开花结果,也正是Autosar这样的软件架构,确保了Ecu的正常工作,实现各种各样稳定可靠的功能。

2025-12-19 11:33:03 133

原创 CAN IF

中断模式:CanDrv 处理由 CAN 控制器触发的中断。基于事件的 CanIf 在事件发生时会被通知。在这种情况下,CanDrv 中对应的中断服务程序(ISR)会调用相关的 CanIf 服务。轮询模式:CanDriver被有序调用,当CanDriver激活相应事件后,CANIF被调用。

2025-03-05 14:45:33 313

原创 CAN Driver

看图。

2025-03-05 09:51:36 355

原创 《模式和状态管理》知识总结三-EcuM与BswM模块的交互

这篇文章主要搞清楚在模式管理中,BswM和EcuM各自的分工。距离学完模式管理也有几天时间了,写这篇文章算是复习一下。

2025-03-04 20:35:52 494

原创 ISO15765-2

ISO15765-2对UDS中的网络层做了具体的抽象。下边从TP层的作用、TP层的服务、TP层的协议三点对ISO15765-2做一个简要的笔记。

2025-02-26 19:35:14 417

原创 《模式和状态管理》知识总结二-BswM

这篇文章对我看文章了解到的BswM的知识进行总结BswM模块和EcuM模块一起合作,管理整个ECU的状态。之前总觉得状态机制没什么用,后来发现是自己做的东西太简单,根本用不到状态机制......BswM主要进行的工作有两个:模式仲裁和模式控制。模式仲裁部分接收来自SWCs和其他BSW的模式请求或者模式指示,然后进行仲裁,模式控制部分根据仲裁结果进行模式切换。

2025-02-21 17:15:16 500

原创 《模式和状态管理》知识总结一-EcuM

我在这里列出的一些名词的含义只是我在学习过程中自己并不知晓的名词,有其他不会的名词可以自行阅读文档。(会读文档真嘟很重要)Callback:回调函数,由高级的模块提供,由低级的模块调用,来通知高级的模块某些事情的发生。Callout:Autosar中的一种重要机制,允许开发者在标准框架中插入自定义代码,以满足特定的应用需求。Integration Code:也是一部分代码,用于将不同的SWC和BSW集成到一起的代码,确保各个模块协同工作,例如Callback和Callout。

2025-02-18 21:50:47 1092

原创 RTE知识总结

在开头,写一点自己学习的心得体会。学习的过程中切忌东一榔头,西一棒子。知识都是成体系的,像一课参天大树一样,我们学习之前首先要做的就是找到这个大树的树干部分,在学习完树干部分之后,再进行查补和扩展。所以我打算以老灰老师的专栏作为我学习的主干,后边再进行添砖加瓦,之后会将学习的一些问题和见解写成文章,以供参考,还请诸佬不吝赐教。

2025-02-15 10:04:03 1118

原创 《Mcal》--MCU模块

系统通用模块的配置主要包括Adc和FTM,将再具体涉及到这些外设的时候进行详细介绍。主要用于配置芯片在RUN、HSRUN、VLPR三种模式下的第一类CLK的配置。图1中SOSCDIV1的值,影响到SOSCDIV1_CLK。用于配置图1中的OSC,会影响到SPLL_CLK和和SOSC_CLK。有些外设在配置的时候需要有参考时钟,在这里创建,然后引用就可以。SOSCDIV1_CLK的值,单位位Hz。使用PLL的情况下,只能选择高频范围。选择系统晶振的范围。比较重要的是时钟的配置。重要的是前两个CLK。

2025-01-07 22:30:36 900

原创 Simulink使用代码继承工具将外部c代码封装成Simulink模块用于代码生成

Simulink应用层模型与手写C语言底层代码打包集成的方式有两种。方式一是在代码中集成:应用层模型生成代码后,在底层代码中增加接口层,与应用层代码整合编译,autosar就是这种方式。方式二是在模型中集成:编写c mex s-function底层驱动模块,将代码封装成模型,在simulink库中直接使用。本文介绍第二种方式。

2024-09-05 14:51:52 1543 1

原创 中断管理笔记

与中断有关的硬件可以分为三类:外设、中断控制器、CPU本身。外设:当外设需要请求CPU时,产生一个中断信号,该信号连接至中断控制器。中断控制器:中断控制器是CPU众多外设中的一个,它一方面接收其他外设中断信号的输入,另一方面,它会发出中断信号给CPU。可以通过对中断控制器编程实现对中断源的优先级、触发方式、打开和关闭源等设置操作。CPU:CPU会响应中断源的请求,中断当前正在执行的任务,转而执行中断处理程序。

2024-09-03 10:31:36 646

原创 内存管理笔记

在计算机系统中,变量、中间数据一般存放在系统存储空间中,只有在实际使用时才将它们从存储空间调入到中央处理器内部进行运算。通常存储空间可以分为两种:内部存储空间和外部存储空间。内部存储空间访问速度比较快,能够按照变量地址随机地访问,也就是我们通常所说的RAM(随机存储器),或电脑的内存;而外部存储空间内所保存的内容相对来说比较固定,即使掉电后数据也不会丢失,可以把它理解为电脑的硬盘。我们主要讨论内部存储空间(RAM)的管理--内存管理。

2024-09-01 19:32:08 1181

原创 任务通知笔记

用来通知任务的,任务控制块中的结构体成员变量就是这个通知值。

2024-08-30 16:20:20 550

原创 软件定时器

从指定的时刻开始,经过一个指定时间,然后触发一个超时事件,用户可自定义定时器周期,闹钟大家都用过吧。芯片本身自带的定时器模块,硬件定时器的精度一般很高,每次在定时时间到达之后就会自动触发一个中断,用户在中断服务函数中处理信息。是指具有定时功能的软件,可设置定时周期,当指定时间到达后要调用回调函数(也称超时函数),用户在中处理信息。硬件定时器数量有限,而软件定时器理论上只需有足够内存,就可以创建多个。使用简单,成本低。

2024-08-29 09:43:46 1106

原创 事件相关介绍

首先介绍两个概念。用一个位,来表示事件是否发生。一组事件标志位的集合,可以简单的理解事件标志组,就是一个整数。(1)它的每一位表示一个事件(高8位不算)(2)每一位事件的含义,由用户自己决定,比如:bit0表示按键是否按下,bit1表示是否接收到消息。这些位的值为1:表示事件发生了;值为0:表示事件未发生。(3)任意任务或中断都可以读写这些位。(4)可以等待某一位成立,或者等待多位同时成立。

2024-08-27 21:19:53 542

原创 信号量笔记

信号量,二值信号量,计数型信号量,互斥信号量

2024-08-26 21:27:17 892

原创 消息队列篇

消息队列

2024-08-22 22:25:44 773

原创 常用任务管理函数

有比较简单的两点需要注意。第一,使用任务挂起函数必须将INCLUDE_vTaskSuspend配置为1。第二,实参为要挂起任务的句柄。

2024-08-16 17:06:31 345

原创 FreeRTOS的两种启动方式及在不同位置开启调度器的区别

11

2024-08-16 10:56:39 344

原创 FreeRTOS的任务创建和删除

11

2024-08-14 21:56:34 555

原创 系统配置文件FreeRTOSConfig.h

系统配置文件讲解

2024-08-12 21:31:31 362

原创 FreeRTOS基础知识

任务调度简介+任务状态

2024-08-12 21:05:23 858

原创 FreeRTOS入门

裸机与FreeRTOS比较+FreeRTOS简介

2024-08-12 19:53:48 606

原创 CMU--Clock Management Unit

2 时钟分频和倍频:能够对主时钟进行分频或倍频操作,以得到不同频率的时钟信号,满足系统中不同模块对时钟频率的需求。1 时钟源选择:可以从多个不同的时钟源中选择一个作为系统的主时钟,例如外部晶体振荡器、内部振荡器等。3 时钟使能控制:可以单独使能或禁用某些模块的时钟,以降低功耗或在特定情况下控制模块的运行。时钟管理单元的主要作用时负责产生、分配和管理单片机系统中的各种时钟信号。在单片机中,CMU通常指时钟管理单元。

2024-08-04 21:58:59 438

原创 CAP基础--环境变量和系统变量

环境变量是ECU、面板和CAPL程序相连接的媒介。例如,在CAPL程序中,通过改变或监控某一环境变量的值可以触发特定的动作,同样,环境变量的值也可以与面板上控制控件或显示控件相关联。与系统变量相比,环境变量仅在CANdb++中定义。

2024-07-23 20:53:17 422

原创 CAPL基础--变量和信号的访问

CAPL中,信号、系统变量和环境变量可以直接被访问和赋值,但赋值方式各不相同。

2024-07-23 15:08:25 2079 1

原创 开栏介绍呐

首先说一下自己开这样一个专栏的初衷,自己学习嵌入式也快一年的时间了,刚开始跟着b站的老师学习c语言,后来也使用了51、32、28335、s32k144这几款单片机。从32的图形化配置底层、到28335的MBD和手动编写访问寄存器的底层代码、再到s32k144的autosar架构。一直缺少对嵌入式的系统性学习,以至于自己的技能树一直是乱七八糟不成体系。正好现在算是放了个短暂的小暑假吧,想借着这个机会整理一下自己的知识体系。顺便也是做一个知识的分享和讨论,欢迎大家在评论区踊跃发言,一起讨论知识,共同进步。

2024-07-17 22:27:51 117

原创 keil5不能编译出hex文件 编译出的使dep文件怎么解决

这个问题是因为从keil5.37版本以后就不再默认安装Compiler Version5编译器了,把这个CV5编译器安装上就好了。害 在学习过程中会遇到各种各样的问题,都要走一遍才行 做个记录吧 在网上找答案没找着,分享给遇到同样问题的同志,也做个烂笔头。过来记录一下自己用32单片机的时候遇到的一个小问题。勾选了生成hex文件还是不能生成hex文件,如图。

2024-07-09 17:34:58 2400 2

原创 CanIf理论

详细内容可参考大哥的文章。写得很好,人也很好,认认真真教东西的一位大哥。

2024-07-05 20:05:37 557

原创 autosar学习过程中的错误及解决办法

PIN ID应该是每个port有自己的ID,不能和别人重复,刚开始用的时候没有很在意这个东西,后来把这个改了之后也就ok啦。导致这个问题的原因有很多 目前遇到过两种情况 做以下总结。(2)我自己在配置port的时候发现了这么一个选项。(1)EB的license到期了。如图,重新激活EB便可解决。

2024-07-01 17:00:38 837 2

原创 DSP28335CAN通讯单路收发实验

最近拿28335的板子练习了一下CAN通讯,现在将实验代码分享出来,在网上借鉴了很多,但是没有看到实现我想要的功能的代码。本次实验实现的功能是:上位机通过向28335芯片发送数据来改变芯片向上位机发送的数据。1、CAN底层配置文件和CANGPIO配置文件。2、应用层文件ecan.c和头文件ecan.h。个人学习分享,欢迎交流,侵权删。

2024-04-09 10:18:47 1900 3

原创 为啥28335ECAN底层代码需要用到影子寄存器(实际上是变量)

因为一些寄存器需要用到32位访问,而单片机可能只可以进行16位访问,如果想向一个32位寄存器进行位操作,就需要引入一个影子寄存器,实际就是一个变量,迫使其进行32位访问,先把整个寄存器赋值给一个影子变量,然后改变该变量中的某一位,在将影子变量赋值给寄存器,便是所谓的迫使进行32位访问,基于此,还可以迫使其进行其他位数的访问,是一个小方法。plus:32位机和32位访问不是同一个概念。

2024-04-01 17:03:53 270 2

原创 2024/3/18总结一下

看这篇文章最大的收获就是解决了这两天一直困扰我的一个问题:我们是如何将我们自己定义的寄存器的名字和硬件联系起来的,就是软件硬件是怎么连接到一起的,这是一个我从学习单片机以来一直困扰我的问题。这个关键字的作用是在C/C++中嵌入汇编语言指令。允许你在代码中直接插入汇编指令,以便进行一些底层的硬件操作或者优化。四、#program DATA_SECTION。目前的理解是确保本条语句不会被编译器优化掉。二、CMD文件(DSP28335芯片为例)一、volatile关键字。三、asm(阿萨姆)关键字。

2024-03-18 18:34:29 414 1

原创 单片机的各种周期

指令周期:完成一条指令所占用的全部时间,它以机器周期为单位。机器周期:一个机器周期包含6个状态周期,12个振荡周期。振荡周期:为单片机提供定时信号的振荡源的周期。状态周期:两个振荡周期为一个状态周期。振荡周期=1/晶振频率。

2024-03-14 09:18:14 730

原创 C语言知识总结理解

遇到啥问题记录啥

2024-03-13 20:13:13 1057

原创 振荡频率和比特率的关系【个人理解】

单片机定时器时,每N个时钟(脉冲)得到一个计数脉冲,就可以得到每个计数脉冲的时间为N/振荡频率(秒)单片机传输数据时,每N个脉冲传送一个比特位,波特率为振荡频率/N(bps)振荡频率即每秒钟产生多少个脉冲信号。比特率即每秒钟传送的比特位。

2024-03-06 14:04:49 556

原创 达林顿管和ULN2003芯片

当B端输入0时,复合管中的两个三极管全部都没有导通,所以C输出端相当于断路,在C端接DC_Motor的一端,motor的另一端接VCC,由于断路,此时motor中无电流,所以motor转。(可看作当输入为0时,输出为1)当B端输入1时,两个三极管导通,CE2导通,所以C端接地,输出为0,motor导通。三个二极管时为了防止B接伏电压,C接负电压,防止C端电压过高。ULN2003即为达林顿二极管的封装在一起。首先,COM端接VCC(12V)

2024-03-05 23:12:09 909 1

原创 why接上拉电阻的I/O口可以输出低电平?

当be导通时,Rce相较于R拉来说,非常小,所以大部分电压被R拉分掉,输出的电压即Uce,很小,可视为0;当给b的电位很低很低,低于be的开启电压时,三极管就进入了截止区,此时Rce非常非常大(相对于R拉),电压都被Rce分掉了,输出电压就是Uce,高电平。be的导通电压非常小,所以be不导通我们把b、e两端都看成接地,此时P区接地,而上边的N区接高电压,PN结反偏,我们再看二极管的伏安特性,u的负半轴就是PN结反偏时的情况,R=U/I,我们可以看到I很小很小,在击穿之前,U一直在增大,电阻肯定非常大。

2024-03-04 23:13:22 1034

原创 PN结的个人理解

而又是怎么造成动态平衡的呢?我们可以通过电势的理论来解释,首先,因为扩散运动会形成电势E1,在E1的作用下,P区中的扩散过去的少量电子又会回到N区,进而形成了E2,N型半导体中多子为电子,显负电,P型半导体中多子为空穴,显正电,遂形成E3,而。N型半导体:掺入+5价的磷元素,磷原子取代原来硅原子的位置从而与剩下的硅原子形成共价键,来构成稳定的结构,但是由于磷原子外有五个电子,所以有一个电子游离在外,而磷原子因为在晶格上,而又失去了一个电子,所以成为了带正电的且。通过自由电子的移动,形成了电流,即导电。

2024-03-01 15:20:55 806

原创 epwm--动作限定子模块(28335)

同时,动作限定子模块时EPWM中结构最简单的子模块,其节奏如上图所示,TBCLK用来驱动子模块,接下来的四个事件信号传送给AQ用来产生相应的EPWM信号,除以上四个信号,还有软件强制事件信号,为软件发起的一个异步强制事件。动作限定子模块是EPWM中最重要的子模块,用来决定在特定事件发生时刻产生何种动作,从而在EPWMxA和EPWMxB引脚产生需要的PWM脉冲。

2023-09-14 20:32:26 356 1

空空如也

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

TA关注的人

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