![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++/MCU
alfslfdsl
这个作者很懒,什么都没留下…
展开
-
基于CANoe的ECU Bootloader刷写软件
目标: 车辆ECU需要更新软件,通过OBD口实现,通过CAN总线实现,编程语言是CAPL。 刷写流程基于ISO15765-3;应用层基于UDS(ISO14229)诊断协议;TP层基于ISO15765-2;数据链路层和物理层基于ISO11898实现: 1.图形用户界面使用CANoe自带的panel来实现,用户可以选取刷写文件,ECU的地址等信息,这些信息通过环境变量被程序访问,环境变量在CANDB++中编辑生成。2.软件架构:刷写工具解析s...转载 2021-10-19 15:23:17 · 5679 阅读 · 3 评论 -
CRC8与CRC3的程序实现(C语言)
下面两部分的程序可以在Dev-C++上新建Console Application项目后运行。1、CRC-8#include <stdio.h>#include <stdlib.h>/* run this program using the console pauser or add your own getch, system("pause") or input loop *///CRC(X) = X^8 + X^4 + X^3 + X^2 + 1 ----0x1原创 2021-07-12 10:02:10 · 1649 阅读 · 1 评论 -
#define assert_param(expr) ((void)0) 这是个宏定义,(void)0执行的操作
问题:#define assert_param(expr) ((void)0) 这是个宏定义,但是我真是不知道(void)0能执行什么操作具体的定义和用法在下面void MY_NVIC_SetVectorTable(u32 NVIC_VectTab,u32 Offset){ assert_param(IS_NVIC_VECTTAB(NVIC_VectTab)); assert_param(IS_NVIC_OFFSET(Offset)); SCB->VTOR=NVIC_VectTab|...转载 2021-04-15 10:48:50 · 2138 阅读 · 0 评论 -
转载 SPI的比喻理解
SPI传输是一个虚拟的移位寄存器方式。你这么理解就可以:主机和从机之间有一条16格的传送带。主机一格一格拨动它转动(相当于发送时钟)。如果是主机发送,它就把一个个的东西放在传送带上,转动8次,就传到从机一侧了。这时,从机可以从传送带上将东西取下。如果从机没有取东西,这些东西再转8次又回到主机一侧。如果是主机接收,从机就要把8个东西一次放上传送带。当主机转动8次,东西就...转载 2020-03-06 17:18:18 · 198 阅读 · 0 评论 -
对于宏定义与重复定义的问题
此文转载自一个提问,会附上原问题地址:https://bbs.csdn.net/topics/392309440?page=1转载为了使自己后续需要的时候可以随时查询转载 2019-11-22 20:01:06 · 3500 阅读 · 0 评论