- 博客(15)
- 资源 (3)
- 收藏
- 关注
原创 中断管理(rtthread)
1.中断管理当 CPU 正在处理内部数据时,外界发生了紧急情况,要求 CPU 暂停当前的工作转去处理这个 异步事件。处理完毕后,再回到原来被中断的地址,继续原来的工作,这样的过程称为中断。实现这一功能的系统称为 中断系统,申请 CPU 中断的请求源称为 中断源。中断是一种异常,异常是导致处理器脱离正常运行转向执行特殊代码的任何事件,如果不及时进行处理,轻则系统出错,重则会导致系统毁灭性地瘫痪。如下图是一个简单的中断示意图。2.RT-Thread 中断工作机制2.1中断向量表中断向量表是所有中断处理
2020-06-08 14:18:13
2605
原创 typedef void(*Func)(void) 理解
题外话:跟typedef有个很类似的关键字时#define,两者其实是有区别的。typedef语句是在编译过程中被解析的,而#define是在编译之前的预处理过程中被解析的。#define所进行的只是对自定义别名的简单替换,而typedef则要灵活得多。总的来说,typedef可以做到#define所能做的所有事情,而且可以做得更好。正式内容:1、 typedef—声明简称 typedef,为现有类型创建一个新的名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typ
2020-06-01 16:59:25
1157
原创 FSK和GFSK
1.FSK频移键控频移键控,英文缩写FSK。 正弦振荡的频率在一组离散值间改变的角度调制,其中每一离散值表示时间离散调制信号的一种特征状态。 频移键控是利用两个不同频率F1和F2的振荡源来代表信号1和0。用数字信号的1和0去控制两个独立的振荡源交替输出。对二进制的频移键控调制方式,其有效带宽为B=2xF+2Fb,xF是二进制基带信号的带宽也是FSK信号的最大频偏,由于数字信号的带宽即Fb值大,...
2020-05-06 11:37:44
6679
1
原创 KEIL环境中添加宏定义方法
前言嵌入式开发中,经常要用到宏定义,在keil环境中有多种添加方法。方法1.在文件中直接添加宏定义#define xxxxxx2,在keil配置环境中打开options for target,找到C/C++界面,如下:...
2020-04-29 11:40:39
14148
4
原创 晶振误差计算方法
前言嵌入式开发中,有时候对晶振误差比较敏感,本文提供了晶振自身误差的计算方法,以便根据实际需求选择合适的晶振。晶体根据等级分为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
6448
原创 跳频实现树型网络的自组网
1.网络拓扑2.自组网方法1.网关上电后开始跳频侦听,并间隔发送一次心跳报文(包含跳频规律等信息)。2.第一层节点上电后,开始慢信道扫描,收到网关心跳报文后,马上跟网关保持跳频同步,并开始向网关发起父亲节点请求,网关同意后,第一层节点发起请求入网流程。3.网关同意第一层节点入网后,分配节点1、2路由信息。节点1、2入网后,开始转发再生心跳报文。4.节点3、4上电后开始慢信道扫描,收到第...
2020-04-28 16:31:08
805
原创 影响无线射频通信的几个条件
1.影响距离的几个指标无线通信时,点与点之间通信效果受很多因素影响。一般影响距离的因素有:1.发射机的发射功率;2.接收机的接收灵敏度;3.射频天线增益;4.实际环境干扰。2.影响距离的射频参数一般发射功率、接收灵敏度、天线匹配完成后,要想增加节点之间的距离,可以调整射频参数,影响通信距离的参数主要有:1.空中速率:速率越低,通信距离越远;2.通信频率:一般频率越低,绕射能力越...
2020-04-28 14:44:36
1996
原创 嵌入式KEIL开发环境自动创建思想
需求有时候涉及到较大的项目,涉及的开发代码很多,团队合作进行编码,一般都是建立git,把代码上传到服务器git上面,团队成员开发编译测试完成后不断上传git,使用的时候再从git上面下载最新的工程。本文的思想是:能否本地编代码完成后,直接上传服务器,让服务器进行编译创建工作,并把结果通过邮件发送给特定人员。设计思想1.在公司服务器上面安装keil环境、jenkins自动创建工具,在开发人员本...
2020-04-27 19:46:41
445
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
312
原创 时间片轮询实现单片机多任务工作
1.时间片轮询思路介绍:时间片轮询法,在很多书籍中有提到,而且有很多时候都是与操作系统一起出现,也就是说很多时候是操作系统中使用了这一方法。使用1个定时器,可以是任意的定时器,这里不做特殊说明,下面假设有3个任务,那么我们应该做如下工作:初始化定时器,这里假设定时器的定时中断为1ms(当然你可以改成10ms,这个和操作系统一样,中断过于频繁效率就低,中断太长,实时性差)。定义一个数值...
2020-04-20 19:02:23
2537
原创 一种(2,1,3)卷积编码以及维特比解码程序C实现
前言原来做燃气项目,无线通讯,为了增加设备间的通讯距离,用到了一套编码解码方案,其中用了一种(2,1,3)卷积编码,卷积图以及要求如下图所示:卷积编码和对应的维特比算法卷积编码程序很简单,但是对应的维特比算法比较复杂,网上有很多算法都是不断循环试探路径,效率上会有一定的缺陷。本程序用了查表法,效率有所提高。但是查表法也只针对这种简单的卷积方法,若是再复杂一些,则制表会很困难。维特比算法参考...
2020-04-19 10:04:15
3975
3
原创 C语言实现FIFO环形存储器
前言在优快云社区看了很多FIFO的C语言实现,发现大多写的很复杂,看不懂。FIFO机制在嵌入式开发中串口数据收发处理相当方便,因此决定分享一下C语言的实现方法。代码很简单,就两个函数:fifo_put和fifo_get,可以结合串口直接进行调用,在项目中使用过。FIFO环形存储器读写说明为了解释方便,定义几个变量fifo.in:写入地址指针,fifo.out:读取地址指针,fifo.cou...
2020-04-16 18:10:12
2283
3
原创 单片机Bootloader与App的Hex文件手动合并方法
前言对带有IAP的嵌入式软件,生产大批量加工时,研发需要提供Boot和App的合并Hex文件,这样才能加快生产进度。Hex文件的简单说明编译器编译出的HEX文件一般格式如下::020000040800F2 //烧录起始地址:10000000C8BD0620D10100085D3B0008DD350008B1 //数据:10001000593B0008C9040008CD690008...
2020-04-15 16:01:03
2542
原创 低压工作状态下Flash易损坏后Bootloader改进方法
低压工作状态下Flash易损坏后Bootloader改进方法1.现象说明:设备用磁取能,有可能工作于欠压状态,批量设备运行一段时间后,有些设备出现APP损坏的问题,导致设备启动异常。软件设计架构如下:2.问题原因分析:单片机欠压状态工作容易发生异常现象,特别是欠压下擦写Flash,比如Flash损坏,因为程序启动后工作于APP并且Bootloader程序比较小,一般APP出问题可能性更大...
2020-04-14 14:00:41
834
convolution.c
2020-04-19
FIFO环形存储器C实现.rar
2020-04-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人