
嵌入式
文章平均质量分 72
不咸不要钱
逝者如斯夫,不舍昼夜
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MDK自动生成带校验带SVN版本号的升级文件
自动将 SVN 版本号 添加到程序中,并为app添加 crc校验,方便mcu升级原创 2023-10-11 19:30:00 · 6801 阅读 · 0 评论 -
低频RFID 底层编码
低频 RFID 底层编码格式解析原创 2022-10-26 20:00:00 · 1291 阅读 · 0 评论 -
单片机裸机实用组件--LED
[easy_led](https://gitee.com/main_i/easy_led)介绍单片机常用led驱动,可以十分方便的控制led闪烁频率和闪烁持续时间移植教程将 easy_led.c easy_led.h easy_led_port.c 添加到工程中打开 easy_led_port.c 文件,自行实现里面的函数, 里面的函数主要是为了实现临界区保护周期性的调用 void eled_ticks(void); 函数使用说明led IO硬件初始化初始化LED驱动并设置led默认原创 2021-12-14 20:10:15 · 5362 阅读 · 0 评论 -
单片机裸机实用组件--软件定时器、时间戳
单片机裸机实用组件–软件定时器、时间戳之前写过一篇关于单片机定时器延时计时功能的博客 ,刚工作的时候搞得现在看来还是比较糙的,是时候整一个新的了。base_timer单片机裸机适用的定时器小组件,通过一个定时器记录系统运行时长,为用户提供一个时间戳信息,当然也有软件定时器功能。移植教程将 base_timer.c base_timer.h base_timer_port.c 添加到工程中打开 base_timer_port.c 文件,自行实现里面的函数, 其中最重要的是 btimer_po原创 2021-12-12 17:27:11 · 9889 阅读 · 0 评论 -
STM32单片机bootloader扫盲
STM32单片机BootLoader扫盲BootLoader和APP之间的关系APP就是平时写的单片机上的应用程序,而BootLoader本质上和APP一样,也是平时写的应用程序。BootLoader只不过是拥有从外部接收数据,更新Flash(也就是APP),跳转至APP功能的特殊APP罢了。以STM32F103为例,如果没有BootLoader,flash分布就如下图左半部分。如果有BootLoader,就如下图右半部分,将flash分为两部分(这里举例用0x800 4000做分界线),存储了两个应原创 2021-10-21 22:40:27 · 49547 阅读 · 21 评论 -
STM32 单片机启动流程
STM32 单片机启动流程刚接触ARM的cortex-m系列单片机时,被告知一切都从main() 函数开始,要将程序写在main()函数中。而仿真时也貌似是从main() 函数开始的,以STM32F103为例。后来了解到全局变量是在main()函数之前初始化的。MDK默认情况下勾选下面选项,跳过了启动的汇编部分代码,直接进入了main() 函数.实际起始位置在cortex-m系列中,中断向量表存放在 Flash 开始部分,Flash中第一个字存放栈顶指针,第二个字存放复位中断服务函数入口地址,原创 2021-10-19 22:36:16 · 18515 阅读 · 0 评论 -
STM32 RTC BKP备份数据区数据丢失问题的讨论
关于RTC备份数据区数据丢失问题的讨论作者:时间:2016-12-02来源:网络收藏问:最近在使用STM32F103RB时,出现了断电后再上电时备份数据区数据丢失的现象,不知道是什么原因,最初在设计的时候芯片核的电源(数字部分电源)和ADC的电源是相连的,备份数据区的数据没有丢失,现在将ADC的电源单独采用一个电压基准芯片供电后,断电再上电发现备份数据区的数据丢失了,全部为0包括时间。如果我将现在的电路板的ADC电源链接到数字电源上,数据就不丢失了。为提高ADC精度,又不丢失备份数据区数据,哪位仁兄有好转载 2021-05-25 11:13:23 · 5137 阅读 · 0 评论 -
如何为程序分配合适的栈空间?
分散加载文件中都有定义堆栈空间大小,堆空间一般由程序员使用malloc函数动态分配的,因此堆空间大小一般都会根据实际情况自行确定。栈是一块用于存储程序数据的内存区域,例如下述数据:局部变量返回地址函数参数编译器临时变量中断时的上下文在 IAR 中,可以开启栈使用分析让 IDE 在编译链接阶段就推算出这个程序的栈最大使用量。不过这种方法无法分析使用函数指针的方式调用的函数,也不能确定递归函数的嵌套次数。编译后打开map文件,查看栈最大使用空间,然后修改对应分散加载文件的栈大小(要有一定的余原创 2020-06-10 18:54:52 · 3785 阅读 · 0 评论 -
systick定时器 延时计时
systick定时器是属于cortex M内核的外设,专门为RTOS的系统时钟节拍设计的。systick是cortex M内核自带的,因此和debug调试接口一样,与单片机型号和厂商无关,只要是cortex M内核的单片机,都拥有这个24位的systick定时器。systick定时器是一个24位递减计时器,用户至于要掌握CMSIS包中的SysTick_Config 函数进行初始化即可。 /** \brief System Tick Configuration This fu原创 2020-06-01 18:34:13 · 4255 阅读 · 0 评论 -
单片机按键FIFO
本文代码参考安富莱按键FIFOFIFO数据结构如果不清楚可以参考博文简单的FIFO一般的单片机系统,按键作为人机交互工具是必不可少的,但是普通的按键需要消抖处理,极大的增加了程序开销,降低系统实时性。安富莱的FIFO按键,无需延时处理消抖,可以记录按键按下、弹起、长按、组合按,并且移植起来也十分方便。之前在做一个项目时,用到一个矩阵键盘,移植了这个按键FIFO程序,用起来效果很不错。主要流程就是开启一个10ms的定时器中断,在中断中扫描按键状态,并对按键状态进行分析消抖处理,如果按键动作,将按键原创 2020-05-29 18:47:27 · 7586 阅读 · 3 评论 -
cortex M内核优先级设置
Cortex M内核中每个中断都有一个8位的优先级设置寄存器这个8位的寄存器可以分为抢占优先级和子优先级两个部分(通过设置优先级组设置)抢占优先级和子优先级有什么用?举例说明:有两个中断A、BA的抢占优先级比B的高当B发生中断,正在执行B的中断服务函数时A发生了中断,这个时候,会跳转到A的中断服务函数A的中断服务函数执行完毕后,再接着执行B的中断服务函数这就是中断抢占子优先级的作用是当两个中断的抢占优先级相同时,这两个中断同时发生(或者都被挂起的状态下)子优先级高的先执行,低的暂时挂原创 2020-05-26 19:27:50 · 3838 阅读 · 0 评论 -
IAR教程之IAR常用功能简介
IAR常用功能简介本教程适用于初次接触IAR的同学,简单介绍IAR的下载和调试。IAR配置选择IAR可以一套代码使用多种配置,龙邱的MK60FX和MK60DN就是通过不同配置公用一套代码。代码颜色设置用户关键字上面颜色设置中有一项是设置用户关键字颜色的,IAR支持用户自定义关键字。如果你想要一些变量或者什么比较醒目,可以使用用户关键字功能。首先新建一个UserKeyWord.txt文档,在文档中加入自己的关键字,比如PRINTF和T转载 2020-05-20 19:09:07 · 15122 阅读 · 3 评论 -
IAR教程之IAR安装
IAR安装1.下载1.1打开官网 1.2找到要下载的版本 1.3下载同学们除了可以下载最新版本尝鲜之外,还可以下载之前的版本。低版本IAR打开高版本IAR工程,工程配置会错乱,导致编译报错问题,所以一定要使用比推荐版本高的IAR单片机IAR版本MK60IAR8.2MK66IAR8.2MKV58IAR8.2LPC54606IAR8.2LPC55S69IAR8.32.4IMXRT1052/IMXRT1064IAR8.4(不支转载 2020-05-18 18:08:04 · 42468 阅读 · 15 评论 -
基于单片机的简单的任务调度器
近来工作之余,研究了一下APM的源码。APM源码连接https://pan.baidu.com/s/17Dg1oEJT_fj12DM1BmZWxA发现源码中有一个简单的任务调度器,不太重要的任务都在Scheduler中完成。为什么需要Scheduler呢??飞行器姿态信息需要角速度积分,位置信息也需要光流的积分,也就是需要获取精确的时间间隔,对时间敏感。Scheduler的主要作用是保证主函数运行的时间相同,什么原理呢?假设我们主循环中有6个任务, 每个任务执行时间为1ms,而我们的控制周期要求原创 2020-05-15 18:08:54 · 10206 阅读 · 3 评论 -
嵌入式C语言代码的调试技巧
转载自 https://www.cnblogs.com/gongxing/p/6170111.html在项目开发的过程中,不可避免的会遇到调试代码的情况。刚开始写代码时,我们想看具体执行到哪儿时,往往这么写:printf("***** Code is here! *****\n");随着调试信息的不断增多,我们项目中的printf()函数到处都是,因此,当调试完成时,发现需要注释掉所有的调试代码将非常痛苦。于是,我们通过宏定义对代码进行了这样的改造: //首先,定义调试宏: #d转载 2020-05-15 17:49:33 · 7113 阅读 · 0 评论 -
keil for 51 汉字显示问题
最近用STC8 单片机做一个电子锁相关的项目,用到OLED显示一些汉字,本来没什么问题的,很简单,但是在做指纹录入删除时,OLED显示删除总是不对,甚至影响其他部分显示,检查文件编码方式GB2312没问题,然后又检测字符文件,没问题,后来甚至一度怀疑OLED底层显示汉字问题。最后百度一下,发现原来这个是keil for 51的问题,汉字一般情况下都是占两个字节,下面GB2312汉字,第二个字节为0xfd褒 饼 昌 除 待 谍 洱俘庚过糊 积 箭 烬 君 魁 例笼慢谬凝 琵 讫 驱 三 升 数她听妄锡原创 2020-05-14 19:06:29 · 7878 阅读 · 0 评论