arm
文章平均质量分 52
ZL.zheng
千里之行始于足下。
展开
-
iso 标准的canfd通信问题【基于S32K3系列芯片】
为了避免误解,CiA建议使用术语“ISO CAN FD”和“non-ISO CAN FD”。执行博世(BOSCH)原始CAN FD协议的产品应命名为“non-ISO CAN FD”,在这个过度阶段的产品主要目的是用于前期评估和开发,将来所有产品都将符合ISO标准。CAN-FD仅定义了数据帧,与传统CAN相比,取消了远程帧的支持。原因是在没有数据的情况下,远程帧没有必要改变数据段的比特率。通过配置之后canfd一直和canoe通信无法成功,直到canoe的设置变为non isocanfd之后可以通信,原创 2024-07-19 18:24:22 · 379 阅读 · 0 评论 -
s32k314【入门新手篇】-开发环境安装【ds32开发平台】
登录nxp官网下载:https://www.nxp.com/以上三步请先注册好并登录你的个人账号。点击一下软件运行,选择工作空间。然后输入关键字:S32 查看。弹出什么就安装什么就好了。原创 2024-06-04 20:44:14 · 343 阅读 · 0 评论 -
巧用断点设置查找bug【debug】
全速运行,可以看到当DelayTimer的值为20的时候,MCU停在了断点处,再 次全速运行,MCU将不会停下来。型,当代码运行到断点处,MCU不会Halt,可以通过Debugger Console查看。也可以在Outline,选中变量,然后鼠标右键,在弹出的菜单里选择Toggle。默认设置的断点,当代码运行到断点处MCU就会被挂起,从而停在断点处。是某个变量被设置为某个值,也可以是外设某个状态位置位,也可以是它们的。于软件庞大,调用关系复杂,变量多处访问,在调试这种问题是,通常做法是。原创 2024-04-20 15:42:53 · 513 阅读 · 0 评论 -
S32DS平台上使用DWT模块进行代码时间计算和利用脚本文件进行问题定位
DWT(Data Watchpoint And Trace Unit),是 ARM Cortex M 系列内核(ARMCortex-M V7(K1 M4F, K3, M7))提供的数据监测点和跟踪单元,以支持数据断点功能。。CYCCNT 是一个 32BIT 的 UP计数器,记录内核时钟的运行个数,内核时钟跳动一次,改计数器就加 1,对K3X4 内核时钟最高 160M,每个时钟节拍周期是 6.25ns,最长能记录 26.84S。原创 2024-04-19 17:29:35 · 438 阅读 · 0 评论 -
LIN协议的那些事【入门以及配置】
全称为Local Interconnect Network,是基于UART/SCI(通用异步收发器/串行接口)的低成本串行通讯协议,应用了单主机多从机的概念,总线电平一般为12V,传输速率最高限制为20kbps。由于物理层的限制,一个LIN网络最多可以连接16个节点,最长总线长度为40米。对于不需要像动力系统和底盘系统那样的速率和可靠性的传感器和执行器,即车身系统,可以采用LIN来构筑简单、低成本的局域网络,适用范围包括车窗、座椅、天窗、门锁、空调、照明等舒适性相关的领域。原创 2024-03-31 18:10:32 · 2547 阅读 · 1 评论 -
bootloader和app之间的注意问题以及调试技巧【基于s32ds】
stack:栈段,该地址空间的大小在C工程的链接文件中给出,CPU会自动保留该区域,不对其进行任何初始化,但在进入C语言main ()函数之前必须将.stack的起始地址 (stack的最小地址或者最高地址,也称为栈顶—stacktop,具体取决于该CPU架构的栈生长方式) 赋值给CPU的栈指针寄存器SP (stack pointer) ,该过程也被称为堆栈初始化;.heap:堆段,该地址空间的大小在C工程的链接文件中给出,CPU会自动保留该区域,并初始化用于堆管理的指针链表;原创 2024-03-30 23:26:14 · 1281 阅读 · 0 评论 -
UDS协议从入门到入坑分享
*原创 2024-03-21 21:41:21 · 1247 阅读 · 0 评论 -
stm32cubemx下载、安装以及uart工程实战【最新版本傻瓜式教程】
点击 USART1,设置模式为 Asynchronous,无硬件流控制,参数为:115200,8 Bits,None,1;先选择自己所需要的包,然后再点击refresh ,再点击install。生成代码之前你可以在以下这个界面设置关于生成的编译链,生成的堆栈空间大小,以及项目位置等等。选择自己电脑对应环境的版本,我的是windows11,所以选择windows版本。没有登录账号的建议先注册登录再进行下载,这样省去后面认证的麻烦。修改包安装路径,因为我是安装在d盘,所以支持包我也安装在d盘。原创 2024-01-21 16:53:14 · 2241 阅读 · 2 评论 -
芯片svd文件生成
【代码】芯片svd文件生成。原创 2023-02-14 16:13:16 · 975 阅读 · 0 评论 -
M4FP 芯片 IAP程序和APP程序互相跳转
指用户程序在运行过程时能对用户Flash区域进行烧写,目的是为了用户可以方便地通过用户自己预留的通信接口,对用户产品中的固件程序进行更新升级。本方案中采用后台式DFU双区升级模式进行用户APP程序的升级。DFU(DeviceFirmwareUpdate)也就是设备固件升级的意思。判断为中断遗失,无法触发接收中断导致,在APP程序跳转时无清除中断标志,将跳转函数移出中断回调函数解决。1.IAP跳APP,app跳回IAP时出现串口中断无用?APP起始地址:0x44000。IAP起始地址:0x0。原创 2023-01-18 09:24:06 · 338 阅读 · 0 评论 -
关于斩波频率一点理解
对于斩波频率的理解,用于步进电机中时。。。原创 2022-07-27 18:23:19 · 3734 阅读 · 0 评论 -
vref简谈
vref在电路中作用以及如何调修原创 2022-07-19 18:50:22 · 6315 阅读 · 0 评论 -
51内核使用外部中断在中断中使用printf后无法回到主函数问题
51内核外部中断使用printf无法回到主函数原创 2022-06-08 19:27:16 · 1013 阅读 · 0 评论 -
keil中获取系统时间
包含头文件:time.h程序:运行结果:原创 2022-04-07 16:17:20 · 2884 阅读 · 8 评论 -
warning: #188-D: enumerated type mixed with another type
warning: #188-D: enumerated type mixed with another type警告:#188-D:枚举类型与另一类型混合出现这个警告是变量类型不匹配的问题。我用函数封装去使能nvic中断,变量转换过程导致。原本是这样:强制类型转换成枚举类型就好了。...原创 2022-03-17 15:10:02 · 14789 阅读 · 0 评论 -
jlink 固件升级
转:https://www.cnblogs.com/mm327596194/p/6576528.html准备1.Jlink一个2.在Atmel官网下载SAM-BA软件,并安装,也网上所说的AT91-ISP。http://www.atmel.com/zh/cn/tools/sam7s-ek.aspx3.JLInk出厂固件“v8_ID-XXXXXXXX.bin”(引用)论坛的高人提供的。下载链接:http://download.csdn.net/detail/suyong_yq/65249134转载 2022-02-09 14:39:18 · 7352 阅读 · 0 评论 -
keil5制作flm文件【插件】
模板文件路径:在你安装mdk软件的arm/flash目录下像我这里是:实在没找到的可以这里下载:https://download.csdn.net/download/weixin_43673603/75537240打开 模板工程之后,文件主要是包含两个:FlashPrg.c 和 FlashDev.cFlashDev.c:主要是器件信息的相关配置:包括内存大小,page大小等信息,这些信息要根据自己使用的flash来设置FlashPrg.c主要是下面几个函数:extern原创 2022-01-12 17:01:52 · 5920 阅读 · 0 评论 -
QSPI 几种模式理解
NOR FLASH 和NAND FLASH 区别:Nor Flash :写入和擦除的速度低;结构复杂,成本高;存储容量较小;一般用于存储Bootloader以及操作系统或者程序代码,可以在芯片内部直接运行代码。NAND Flash :写入和擦除的速度较快;结构简单,成本低;存储容量较大;一般用于存储材料和数据。Flash在外部接口上主要分为CFI flash 和SPI(STD/Dual/Quad) flash。CFI flash 读写速度快,需要的硬件引脚多且不同容量的硬件不兼容;而SPI(STD/D原创 2021-12-16 17:57:16 · 13026 阅读 · 0 评论 -
mx25l128芯片全部命令头文件
/*********************************************************************** * Copyright (c) 2017 - 2021, Unicmicro Co.,Ltd . * All rights reserved. * Filename : mx25l28.h * Description : mx25l28 driver header file * Author(s) : zhilan * version原创 2021-12-10 18:23:22 · 866 阅读 · 0 评论 -
qspi MX25L12835F flash 理解
芯片引脚描述芯片datasheet网址:https://pdf1.alldatasheet.com/datasheet-pdf/view/575545/MCNIX/MX25L12835F.htmlMX25L12835F特性支持串行外设接口SPI,模式 0 和模式 3 单电源操作 2.7 到 3.6 伏,用于读取、擦除和编程操作128Mb:134,217,728 x 1 位结构或 67,108,864 x 2 位(二 I/O 模式)结构或 33,554,432 x4 位(四 I/O 模式)结构原创 2021-11-30 17:29:35 · 4763 阅读 · 1 评论 -
windows下keil uv5利用一个.C和.H文件生成一个.lib文件(keil封装库文件)
首先打开你的工程,你要生成的。然后呢添加右键添加文件夹然后添加 你要生成的.c和.h文件,如下:添加你要生成的.C文件把工程中不需要生成的lib的文件去掉,不然生成的lib文件很大此时点击编译,就可以在我们的输出的文件夹看到相关的lib文件了。...原创 2021-10-22 14:39:46 · 1253 阅读 · 0 评论 -
stm32 timer pwm输入捕获理解
stm32 timer输入捕获计算公式:IC2Value=TIM_GetCapture2(TIM2);//获得CCR2的值pulse=TIM_GetCapture1(TIM2);//获得CCR1的值DutyCycle=pulse/IC2Value;Frequency=72000000/IC2Value;duty=(u32)(DutyCycle*100);freq=(Frequency/1000);原创 2021-10-20 11:41:02 · 2367 阅读 · 0 评论 -
stm32 TIM_CR1中的第8:9bitCKD的理解和使用
这个的使用,一般都用在输入捕获中的,用于将输入的信号滤波。比如我输入的信号不稳定,有的高有的低,这个时候就可以使用这个来设置,但是他还要配合别的位去使用。对于这个bit的理解和使用假如pclk=84MHzM4 TIMER1-4 TIM_CR1 bit8:9解释CKD:定时器时钟频率与数字滤波器使用的采样时钟之间的分频比tCK_INT=1/pclk ustDTS:数字滤波器采样时钟频率,若CKD=2,则tDTS=2/tCK_INTTIM_SMCR bit8:11 外部触发信号滤原创 2021-09-30 14:37:47 · 1824 阅读 · 0 评论 -
FATFS文件系统-stm32 arm移植篇
概念先行:FATFS是面向小型嵌入式系统的一种通用的FAT文件系统,它由ANSI C语言编写且完全独立于底层的I/O介质,因此它可以很容易的不加修改的移植到其他处理器当中,就可以利用文件系统的各种函数,对已格式化的SD卡的文件进行读写。源码官网下载:网址源码理解:解压文件会得到两个文件夹,一个是doc文件夹,这里是FATFS的一些使用文档和说明,以后在文件编程的时候可以查看该文档。另一个是src文件夹,里面就是我们所要的源文件。src文件夹下的源码文件功能简介如下:integer原创 2021-08-03 18:13:24 · 346 阅读 · 0 评论 -
keil生成bin文件
接下来要做的要视情况而定:选完fromelf.exe后在输入框中加个空格然后加一串字 :–bin -o ./Obj/@L.bin ./Obj/@L.axf解释:这串字符得依情况而定,不能直接照搬。如下下图所示,博主把.hex和.axf等文件输出到Obj文件夹里了,故为:–bin -o ./Obj/@L.bin ./Obj/@L.axf若你把.hex和.axf等文件输出到Output文件夹里,则应该为:–bin -o ./Output/@L.bin ./Output/@L.axf..原创 2021-07-19 14:39:37 · 331 阅读 · 0 评论 -
stm32 keil中设置程序在flash还是在sram跑
概念理解:FLASH存储器又成为闪存,它与EEPROM都是掉电后数据不丢失的存储器,但是FLASH得存储容量都普遍的大于EEPROM,,在存储控制上,最主要的区别是FLASH芯片只能一大片一大片地擦除,而EEPROM可以单个字节擦除。SRAM是静态随机存取存储器。它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。注意:SRAM和SDRAM是不相同的,SDRAM是同步动态随机存储器,同步是指内存工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的原创 2021-07-05 15:02:38 · 3606 阅读 · 10 评论 -
关于使用vivado生成.mcs文件并固化到flash的操作
打开软件按照图示一步步操作上图中第二步:选择芯片型号【看硬件芯片上面的丝印】我这里是:s25f1032p-spi-x1_x2_x4 s25f1032p具体代表意思:上图中第三步:选择要生成的文件所存放的路径和生成文件的名字上图中第五步:选择生成新文件所需要的bit文件全部完成之后:点击ok。之后连接你的硬件。右击按图选择:选择你的bit文件,就可以了,之后就不会硬件断电就擦除你的代码了。...原创 2021-06-17 17:11:22 · 2023 阅读 · 0 评论 -
keil uv5出现L6406E错误
Error: L6406E: No space in execution regions with .ANY selector matching uart3.o(.bss).错误如图:经过排查好额网上查询,按照查到的方式修改了以下:网上说的是编译器的版本问题,我是改了之后不见好,排查发现这个问题是因为字段溢出所引起的错误。我是因为,串口的buffer数组因为想这要最大限度收发,就写了65535,结果就报错,改成256就好了。如果你改了编译器之后还是不见好,就去排查所出现的.c文件的数组吧。未原创 2021-06-09 14:37:49 · 2914 阅读 · 2 评论 -
单片机中code、data、idata、xdata等关键字意思
例如:*(volatile uint8_t code *)(addr)正解: code的作用就是告诉单片机,定义的数据要放在ROM(程序存储区)里面,写入后就不能再更改,因为C语言中没办法详细描述存入的是ROM还是RAM(寄存器),所以在软件中添加了这一个语句起到代替汇编指令的作用,对应的还有data是存入RAM的意思。下面还有一些其他关键词的意思:code :程序存储区(64KB),data :可直接寻址的内部数据存储区(128B)idata:不可直接寻址的内部数据存储区(256B)bd原创 2021-05-06 16:59:07 · 7797 阅读 · 0 评论 -
stm32vdd、vcc、vdda等引脚介绍
Vcc:即接入电路的电压,一般是电池接入或者经过稳压输出后的电压VSS:即电路公共地端电压,一般接GNDGND; 即代表地线或0,不意味着真正意义上的大地,一般是电池负极,有时候需要连接大地,有时候不需要,看具体情况:即I/O引脚和内部调压器(稳压)的电压,是设备的工作电压,STM32的数据手册为2.0v~3.6v:即給ADC,复位模块,RC振荡器和PLL的模拟提供供电,STM32的数据手册为2.0v~3.6v,使用ADC时,不得低于2.4v,必须连接到VBAT:电池电压的意思当使用电池或其他电转载 2021-05-06 10:19:56 · 6790 阅读 · 0 评论 -
stm32定时器操作配置(转载)
https://blog.csdn.net/weixin_37584766/article/details/90284244?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.c转载 2020-10-20 09:03:42 · 331 阅读 · 0 评论 -
基于stm32f1的lora开发基础通信实验
一、实验条件二|、实现功能三、实验讲解四、实验效果五、注意点原创 2020-10-28 09:47:44 · 2911 阅读 · 4 评论 -
pwm控制ili9341背光屏幕亮度(stm32f4)
在人眼辨识能力范围内,调节LED亮的时间,达到LED灯的亮度不同。例:给低电平LED就亮,如果一个脉冲中全是低电平那么LED最亮,如果一个脉冲一半是高电平,一半是低电平,那么LED就显得有点暗,这样调整脉冲中的高低电平的比例就可以达到LED的亮度调节。这里用的是TIM3-OC3定时器初始化函数:void TIM3_PWM_Init(u32 arr,u32 psc){ //此部分需手动修改IO口设置 GPIO_InitTypeDef GPIO_InitStructure;原创 2020-09-28 11:27:19 · 1940 阅读 · 0 评论 -
stm32f103 定时器部分详解
https://blog.csdn.net/private_void_main/article/details/81491015转载添加链接描述转载 2020-09-11 09:09:17 · 429 阅读 · 0 评论 -
tb6600 两相四线步进电机相关参数计算关系
假设细分数为16细分 ,步距角为1.8°,则每个脉冲产生的电机转动角度为1.8°/16 = 0.1125°。电机转 一圈所需的脉冲数量为 S360°/0.1125° = 3200个脉冲。同理求得64细分 为12800个脉冲 ,128细分为25600个脉冲。如果步距角为0.9°则在1.8°求得数据上*2倍。然后假设电机要达到的转速为V(r/s),预分频Pre,装载值ARR,PWM初始脉冲宽度Pul。则脉冲频率 = V * S 。定时器频率= Fclk/(分频值 * 装载值) = Fclk/((P转载 2020-09-09 10:21:49 · 2241 阅读 · 0 评论 -
char类型拼接(c)
方法1:char *name1="123";char *name2="456";char test[10];strcpy(test,name1);strcat(test,name2);方法2:string name1,name2,name3;name1="123";name2="456";nam3=name1+name2;char test2[30];strcpy(test,name3.c_str());方法3:char *name1="12原创 2020-09-03 11:35:28 · 11214 阅读 · 1 评论 -
c中unsigned int 转换成unsigned char类型
void fu(unsigned int n){ int k,k1; k=n/16; k1=n%16; if(k<=15){ switch(k1){ case 10: temp = 0xa0; break; case 11: temp = 0xb0; break; case 12: temp = 0xc0; break; case 13: temp = 0xd0; break; case 14: temp = 0xe0; break; case 15: temp =原创 2020-09-02 15:28:24 · 3009 阅读 · 0 评论 -
单片机中的类型转换
#include<stdio.h>#define uint8 unsigned char#define uint32 unsigned int#define BREAK_UINT32( var, ByteNum ) \ (uint8)((uint32)(((var) >>((ByteNum) * 8)) & 0x00FF))#define BUILD_UINT32(Byte0, Byte1, Byte2, Byte3) \转载 2020-09-02 14:00:15 · 622 阅读 · 0 评论 -
keil关于正点原子的sys.h工程报错修改
这个报错的状态时下面这个情况的,虽然不影响,但是还是要改写一下,看不到红色。这个山谷由于keil不支持汇编语言所搞出来的,改成下面的样式就好了。这就舒服多了。原创 2020-08-27 13:43:26 · 3570 阅读 · 1 评论 -
keil uv5 代码格式化
1下载Astyle工具,解压到你的软件安装目录2.打开keil软件 如图一步一步操作像图中一样添加两个文件名,名字可以随你起,也可以跟我一样Command选择你的Astyle解压路径中的bin的Astyle.exe选择完之后在Arguments这里添加如下语句就可以成功之后再打开你的tool选项就可以发现多了两个你刚刚添加的东西想要格式化当前文件就点current那个选项,格式化工程全部文件就要点all那个选项使用效果如下未格式化前:格式化后:...原创 2020-08-19 15:54:23 · 1143 阅读 · 0 评论