![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
嵌入式
金豆爸爸
亡羊补牢,未为晚也
展开
-
中断管理(rtthread)
1.中断管理当 CPU 正在处理内部数据时,外界发生了紧急情况,要求 CPU 暂停当前的工作转去处理这个 异步事件。处理完毕后,再回到原来被中断的地址,继续原来的工作,这样的过程称为中断。实现这一功能的系统称为 中断系统,申请 CPU 中断的请求源称为 中断源。中断是一种异常,异常是导致处理器脱离正常运行转向执行特殊代码的任何事件,如果不及时进行处理,轻则系统出错,重则会导致系统毁灭性地瘫痪。如下图是一个简单的中断示意图。2.RT-Thread 中断工作机制2.1中断向量表中断向量表是所有中断处理原创 2020-06-08 14:18:13 · 2483 阅读 · 0 评论 -
typedef void(*Func)(void) 理解
题外话:跟typedef有个很类似的关键字时#define,两者其实是有区别的。typedef语句是在编译过程中被解析的,而#define是在编译之前的预处理过程中被解析的。#define所进行的只是对自定义别名的简单替换,而typedef则要灵活得多。总的来说,typedef可以做到#define所能做的所有事情,而且可以做得更好。正式内容:1、 typedef—声明简称 typedef,为现有类型创建一个新的名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typ原创 2020-06-01 16:59:25 · 778 阅读 · 0 评论 -
KEIL环境中添加宏定义方法
前言嵌入式开发中,经常要用到宏定义,在keil环境中有多种添加方法。方法1.在文件中直接添加宏定义#define xxxxxx2,在keil配置环境中打开options for target,找到C/C++界面,如下:...原创 2020-04-29 11:40:39 · 12705 阅读 · 3 评论 -
晶振误差计算方法
前言嵌入式开发中,有时候对晶振误差比较敏感,本文提供了晶振自身误差的计算方法,以便根据实际需求选择合适的晶振。晶体根据等级分为0.1ppm\0.5ppm\1ppm\2ppm\5ppm\10ppm\20ppm\30ppm\50ppm\100ppm\200ppm晶体根据时间产生偏差的计算方法以10ppm晶体为例:1天的偏差:10(ppm)*24(小时) *60(分钟)60(秒)=864000...原创 2020-04-28 19:04:28 · 5713 阅读 · 0 评论 -
嵌入式KEIL开发环境自动创建思想
需求有时候涉及到较大的项目,涉及的开发代码很多,团队合作进行编码,一般都是建立git,把代码上传到服务器git上面,团队成员开发编译测试完成后不断上传git,使用的时候再从git上面下载最新的工程。本文的思想是:能否本地编代码完成后,直接上传服务器,让服务器进行编译创建工作,并把结果通过邮件发送给特定人员。设计思想1.在公司服务器上面安装keil环境、jenkins自动创建工具,在开发人员本...原创 2020-04-27 19:46:41 · 345 阅读 · 1 评论 -
一种带重复区域的数据拷贝程序
1.前言写嵌入式代码时,有时候会遇到数据拷贝,但是数据区有重复的现象,本文提供了这样一个拷贝函数,针对源地址域和目的地址域有重复的问题做了特殊处理。2.代码void mem_move(INT8U *dst, INT8U *src, INT16U len){INT8U *psrc,*pdst;if (len == 0){ return;}psrc = src;pdst ...原创 2020-04-25 15:59:12 · 181 阅读 · 0 评论 -
时间片轮询实现单片机多任务工作
1.时间片轮询思路介绍:时间片轮询法,在很多书籍中有提到,而且有很多时候都是与操作系统一起出现,也就是说很多时候是操作系统中使用了这一方法。使用1个定时器,可以是任意的定时器,这里不做特殊说明,下面假设有3个任务,那么我们应该做如下工作:初始化定时器,这里假设定时器的定时中断为1ms(当然你可以改成10ms,这个和操作系统一样,中断过于频繁效率就低,中断太长,实时性差)。定义一个数值...原创 2020-04-20 19:02:23 · 1677 阅读 · 0 评论 -
C语言实现FIFO环形存储器
前言在CSDN社区看了很多FIFO的C语言实现,发现大多写的很复杂,看不懂。FIFO机制在嵌入式开发中串口数据收发处理相当方便,因此决定分享一下C语言的实现方法。代码很简单,就两个函数:fifo_put和fifo_get,可以结合串口直接进行调用,在项目中使用过。FIFO环形存储器读写说明为了解释方便,定义几个变量fifo.in:写入地址指针,fifo.out:读取地址指针,fifo.cou...原创 2020-04-16 18:10:12 · 2102 阅读 · 3 评论 -
单片机Bootloader与App的Hex文件手动合并方法
前言对带有IAP的嵌入式软件,生产大批量加工时,研发需要提供Boot和App的合并Hex文件,这样才能加快生产进度。Hex文件的简单说明编译器编译出的HEX文件一般格式如下::020000040800F2 //烧录起始地址:10000000C8BD0620D10100085D3B0008DD350008B1 //数据:10001000593B0008C9040008CD690008...原创 2020-04-15 16:01:03 · 2347 阅读 · 0 评论 -
低压工作状态下Flash易损坏后Bootloader改进方法
低压工作状态下Flash易损坏后Bootloader改进方法1.现象说明:设备用磁取能,有可能工作于欠压状态,批量设备运行一段时间后,有些设备出现APP损坏的问题,导致设备启动异常。软件设计架构如下:2.问题原因分析:单片机欠压状态工作容易发生异常现象,特别是欠压下擦写Flash,比如Flash损坏,因为程序启动后工作于APP并且Bootloader程序比较小,一般APP出问题可能性更大...原创 2020-04-14 14:00:41 · 712 阅读 · 0 评论