- 博客(214)
- 收藏
- 关注
原创 USART接收不定长数据 -空闲中断
空闲中断:自接收到上个字节完成起(RXNE=1),超过一个字节周期时长没收到新数据,产生硬件中断(USART的SR第4位IDLE被置1),这时USART_IRQHANDLER()函数被调用,用户可在这里识别中断的类型,并做数据处理。如正点原子的LORA模块,硬件机制1ms传送1个字节,即115200波特率下接收一字节用90us,但后面900us左右间隔是闲置的,这类机制,不适合使用空闲中断。USART的非空中断标志位, 是自动清理的, 你只要读出数据, 标志会就自动被清, 不用自己费心.
2024-04-18 20:52:47
935
原创 SystemView安装使用
SystemView是一个可以在线调试嵌入式系统的工具,它可以分析有哪些中断、任务执行了,以及这些中断、任务执行的先后关系。还可以查看一些内核对象持有和释放的时间点,比如信号量、互斥量、事件、消息队列等。这在开发和处理具有多个线程和事件的复杂系统时尤其有效。说白了就是我们可以通过这个软件实时监控我们实时系统的任务切换及调度情况,并且这个软件支持多种实时系统,包括FreeRTOS uSCIll等
2024-04-17 22:36:37
2349
1
原创 keil、IAR下如何解决HardFault_Handler中断问题
调试过程中难免会遇到各种异常,hardfault算是比较常见的一种。在最开始学习的时候,一度很害怕这种情况,不知道怎么定位,摸不清是哪里导致了问题,全靠猜测。网上有很多定位hardfault问题的教程,基本大差不差,方法就那些。最近有点时间,我也整理下。本章主要记录下我实践过的hardfault定位办法。后续遇到hardfault相关问题,也一并补充到本文中,方便自己查阅。
2024-03-25 21:01:09
4180
原创 文本文件和二进制文件
记录文件,频率过高会导致数据丢失因为用sprintf函数会有一个转换的时间;所以就考虑记录二进制文件,提高记录效率。fdr记录60hz数据记录后的二进制文件放在MATLAB解码
2024-03-20 22:51:50
1737
原创 STM32CAN2进入bus off 模式
CAN通信:总线疑似进入busoff,Busoff的产生是一定是因为节点自身识别到自己发送错误,TEC(Transmit Error Counter)>255导致的。
2024-02-02 21:52:30
1585
原创 CRC(循环冗余校验)直接计算和查表法
CRC(Cyclic Redundancy Check),即循环冗余校核,是一种根据网络数据包或电脑文件等数据产生简短固定位数校核码的快速算法,主要用来检测或校核数据传输或者保存后可能出现的错误。CRC利用除法及余数的原理,实现错误侦测的功能,具有原理清晰、实现简单等优点。
2023-12-05 21:58:55
1356
1
原创 CAN2无法通信问题
问题由来-最近一直在做16s智能电池的通信,可是无人机突然显示hub电压24v(此hub只支持2s-12s电池,无法显示16s电池电压),容易造成低电压返航,实际电压却依旧是64v。单独使用CAN2时一定要同时打开CAN1和CAN2的时钟,否则CAN2无法正常工作,因为CAN2是从CAN,CAN1是主CAN。当邮箱一直被占用后,导致CAN通讯有问题,作为一种保护机制,应该重新进行初始化CAN。当can正常工作时,STB引脚为低电平,当STB引脚为高电平的时候,CAN总线闲置。
2023-11-09 09:44:18
790
转载 IAR软件中直接查看编译后代码大小
在使用IAR软件编译代码时,编译后往往看不到编译后代码的大小情况。在调试程序的时候还是比较麻烦的。下面就总结两种最简单的方法在IAR编译器中查看代码大小。原文:https://blog.youkuaiyun.com/qq_20222919/article/details/121743088。
2023-10-19 21:52:01
1612
原创 STM32内部flash闪存的总结
擦除扇区之前需要设计编程/擦除并行位数,决定了写入的时间,Flash 擦除操作可针对扇区或整个 Flash(批量擦除)执行。注意:我们的f407只有3个128kb的沙扇区,对扇区进行访问或者擦除的时候需要计算出其实地址和结束地址,用户下载数据时候,是从起始地址下载进去的;原因:复位后,Flash 控制寄存器 (FLASH_CR) 不允许执行写操作,以防因电气干扰等原因出现对Flash 的意外操作。— 主存储器块,分为 4 个 16 KB 扇区、1 个 64 KB 扇区和 7 个 128 KB 扇区。
2023-10-19 21:46:58
1932
原创 浮点型数据在内存中是如何存储的
浮点型数据在内存中是如何存储的对于32位的浮点数,最高位是符号位s,接着的8位是指数E,剩下的23位为有效数字M,对于64位的浮点数,最高位是符号位S,接着的11位是指数E,剩下的52位为有效数字M
2023-09-12 22:09:46
767
原创 STM32定时器的One Pulse Mode,OPM应用
OPM:单脉冲模式 (One-pulse mode) >0:计数器在发生更新事件时不会停止计数> 1:计数器在发生下一更新事件时停止计数(将 CEN 位清零)
2023-09-08 21:24:53
2120
2
转载 什么是_IO变量、volatile(即__IO)
IO为volatile变量,volatile 影响编译器编译的结果, 指出:volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错。volatile(即__IO) 告诉编译器变量是随时可能发生变化的,每次使用它的时候必须从变量的地址中读取,因而编译器生成的可执行码会重新变量的地址读取数据。而如果没有使用__IO,编译器优化做法是,由于编译器发现两次从i中读数据的代码之间的代码没有对i进行过操作,它会自动把上次读的数据放在k中,而不是重新从i里面读。
2023-08-31 09:56:29
615
转载 goto语句
goto语句可以一次跳出许多层循环,方便检查一些错误,还可以对for循环中包含的if条件句加一个goto,方便我们对满足条件的部分进行及时的处理。goto语句的语法是这样的:1,设置一个后面带冒号的标签,标签的名字可以任意去取,冒号后面的是想要对语句进行的操作。其中语句标号是按标识符规定书写的符号, 放在某一语句行的前面,标号后加冒号(:)。语句标号起标识语句的作用,与goto 语句配合使用。在这里,label 可以是任何除 C 关键字以外的纯文本,它可以设置在 C 程序中 goto 语句的前面或者后面。
2023-08-28 17:45:34
271
原创 原码、反码、补码,进制转换,有符号数和无符号数转换
计算机底层存储数据时,存储的是数据对应的二进制数字。,而实际存储的是整型数据的补码。原码、反码以及补码都是的,其中最高位存放符号位,。
2023-08-17 16:32:13
1285
转载 SPI中的CPHA,CPOL详解
SPI由于接口相对简单(只需要4根线),用途算是比较广泛,主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。即一个SPI的Master通过SPI与一个从设备,即上述的那些Flash,ADC等,进行通讯。而主从设备之间通过SPI进行通讯,首先要保证两者之间时钟SCLK要一致,互相要商量好了,要匹配,否则,就没法正常通讯了,即保证时序上的一致才可正常讯。而这里的SPI中的时钟和相位,指的就是SCLk时钟的特性,
2023-08-15 10:34:42
6176
原创 STM32 定时器自动重装载寄存器ARR带来的影响,ARPE0和1区别
自动重载寄存器是预装载的。对自动重载寄存器执行写入或读取操作时会访问预装载寄存器。预装载寄存器的内容既可以直接传送到影子寄存器,也可以在每次发生更新事件(UEV) 时传送到影子寄存器,这取决于 TIMx_CR1 寄存器中的自动重载预装载使能位 (ARPE)。当>计数器达到上溢值(或者在递减计数时达到下溢值)并且 TIMx_CR1 寄存器中的 UDIS 位为 0时,将发送更新事件。该更新事件也可由软件产生。
2023-08-10 22:05:06
6280
2
原创 IAR未知错误 无法跳转到定义, Browse engine disabled for this project.
删除它临时生成的一些文件就好了。
2023-08-10 17:06:44
444
原创 模拟IIC——关于模拟IIC的IO口的配置选取推挽输出还是开漏输出,以及是否需要更改IO口输入输出模式和是否需要对IO配置上拉
推挽输出对应->需要切换输入输出模式;开漏输出对应->不需要切换输入输出模式;我学习IIC的时候明明记得IIC需要使用开漏输出和接上拉电阻的;如果使用推挽输出,当多个设备连接到一个总线上面时,如果一个设备输出低电平一个设备输出高电平就会出现短路的情况。而且不能推挽输出实现线与。为什么这里可以使用推挽呢?我猜测这是模拟IIC和硬件IIC的不同了。
2023-08-08 15:35:36
3404
原创 stm32常见数据类型
int64_t占用8个byte,数据范围 -2^63 到 (2^63-1) 2^63 = 9223372036854775807ll。uint64_t 占用8个byte, 数据范围 0 - 2^64 2^64 = 18446744073709551615。s32 占用 4个byte,数据范围 -2^31 到 (231-1)231 = 2147483647。s16 占用2个byte,数据范围 -2^15 到 (2^15-1)s8 占用1个byte,数据范围 -2^7 到 (2^7-1)
2023-08-02 21:12:17
6498
原创 C语言隐式类型转换规则 (比较实用)
float型数据在运算时一律转换为双精度(double)型,以提高运算精度(同属于实型值时,一律是右部值转换为左部类型。不同的操作数时,那么在操作之前行先将较低的类型转换为较高的类型,然后进行运算,运算结果是较高的类型。当整型数据和双精度数据进行运算时,C先将整型数据转换成双精度型数据,再进。当字符型数据和实型数据进行运算时,C先将字符型数据转换成实型数据,然后进。数据类型转换在C语言的表达式中,准许对不同类型的数值型数据进行某一操作或。当不同类型的数据进行操作时,应当首先将其转换成相同的数据类型。
2023-08-02 21:00:05
520
1
原创 Iar工程调试使用教程
https://blog.youkuaiyun.com/flyme2010/article/details/82106997https://www.likecs.com/show-203879826.html
2023-08-01 21:51:33
370
转载 MS5611气压计数据采集(模拟IIC)/温度采集/相对高度求解
S5611使用24位ADC,可以采集温度和气压,并且温度可以用来补偿气压,MS5611在出厂时进行了校准,校准的6个系数存储在PROM寄存器中, PROM寄存器起始地址0XA0, 从0xA0到0XAE, 一共16字节, 一共16*8 = 128位
2023-07-28 20:37:16
1720
原创 Git安装与学习
镜像下载是网站对服务器的一个保护措施之一,就是A站点下载的数据同 B站点下载的数据完全一样,b站点就是A站点的一面镜子。所以镜像下载下来和原站点一摸一样。
2023-07-24 10:22:34
171
转载 IAR的View视图菜单中Watch、 Live Watch、 Quick Watch、 Auto、 Locals、 Statics这几个子菜单的含义和区别
Watch菜单下面有4个子菜单:Watch1 ~4,但都是一样的,可以分别开4个窗口出来同时查看表达式/变量值。这个子菜单和Atuo类似,也是自动显示,区别在于:Locals是显示的局部表达式变量,而静态/全局变量不会显示。细心的朋友其实会发现,子菜单是进行了分类的(用横线隔开),本文讲述的就是Watch这一类查看变量的子菜单。View这个菜单的意思就是打开(已关闭的)视图窗口,比如我们的工作空间窗口不见了,就可以通过该菜单打开。新版的IAR的菜单和以前老版本的排序、内容可能略有差异,但大体相同。
2023-07-04 16:14:46
1097
原创 Shell、Xshell以及两者的关系
能操作应用程序的接口都能称为 shell。狭义上的 shell 指的是命令行方面的软件,如 sh、bash、csh 等。在计算机中,Shell俗称壳(用来区别于核),Shell是Linux和Unix下的命令解析器。用来为用户提供操作界面的软件(命令解析器)。类似于DOS和Windows下的命令解析器:command.com、cmd.exe。这个Shell(命令解析器)的作用: 用于接收用户命令,然后调用相应的应用程序。(将用户输入的命令加以解释并传给Linux/Unix操作系统)
2023-06-28 21:00:12
2993
转载 Linux和Xshell
工作中不直接在服务器上进行业务的操作,而是需要在工作电脑上安装一个远程连接软件–Xshell,远程操作机房的服务器,当然我们现在只是在自己的一台电脑上模拟出这种状态。
2023-06-28 17:45:17
286
原创 电池容量和放电倍率
如:一块1000mAH的电池放电倍率就是10C,它能在正常负载下能持续的以10A的电流进行放电0.1小时。以1000mAH为例,意为以1000毫安的电流进行连续放电,可以放电1小时(1000mA=1A)一块1000mAH的电池充电倍率就是5C,最大以5A的电流进行充电。放电倍率C值:指当前电池的放电电流与电池自身容量的比值。
2023-06-05 11:40:04
5589
转载 无人机电调
引用文章因无刷电机与有刷电机相比取消了碳刷结构,所以无刷电机需要一个能替代碳刷功能的部件,它就是电调。电调的全称是电子调速器(electronic speed controller ,简称ESC),电调对应使用的电机类型不同,分为无刷电调和有刷电调。有刷电机转动时可以不用电调,但如果没有电调就无法控制电机的转速。而无刷电机必须要有电调,否则不能转动。
2023-05-19 22:33:56
6261
转载 大端模式和小端模式的区别、
参考文章https://blog.youkuaiyun.com/qq_39715000/article/details/118944940https://www.guyuehome.com/19990这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个
2023-05-14 17:30:14
11855
原创 STM32F4的输出比较极性和PWM1,PWM2的关系
而它们的占空比是由各自的CC决定的,所以占空比可以各自设定它们的相位,由于计数器更新,所有PWM同时跳变,所以它们的相位是同步的.后面就是输出模式控制器,以PWM模式1向上计数为例,CNT小于CCR时,REF置有效电平,CNT大于等于CCR时,REF置无效电平。再经过极性选择,使能输出,最终通向GPIO口,输出波形。PWM1中空控制的是高电平的占空比,外接LED的时候灯光是随着TIMx_SetComparex()函数中占空比的增大由最亮逐渐变最暗,当达到100%的占空比的时候最暗。
2023-05-11 11:39:35
3457
原创 PWM驱动舵机原理、SG90、舵机控制
是用0.5-2.5ms的脉宽来控制舵机角度,当脉宽小于0.5为死区,就是舵机不动,舵机输出轴转角保持0度或稍小于零度,当脉宽等于0.5ms时,舵机输出轴转角为0度,当脉宽等于1ms时,舵机输出轴转角为45度,当脉宽等于1.5ms时,舵机输出轴转角为90度,当脉宽等于2ms时,舵机输出轴转角为135度0,当脉宽等于2.5ms时,舵机输出轴转角为180度,当脉宽大于2.5ms为死区脉宽,舵机不动,舵机输出轴转角保持180度或稍大于180度。
2023-04-26 19:41:39
9074
[SystemView] SystemView升级至V3.07,重大更新,免费使用所有特性(非商业)
2024-04-17
16500数据手册英文
2023-08-17
ADIS16470数据手册
2023-08-17
一些传感器模块资料,嵌入式,开发板103
2023-05-10
PWM驱动舵机程序,舵机原理介绍,https://editor.youkuaiyun.com/md/?articleId=130393151
2023-05-10
Windows File Recovery
2023-01-15
基于STM32的室内环境监测系统
2023-01-14
各传感器的数据手册以及程序、BMP180、DHT11温度模块、HC-SR04 超声波模块、光敏电阻传感器、热敏传感器、无源蜂鸣器
2023-01-14
基于Simulink光伏太阳能电池板仿真含Matlab源码
2022-12-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人