![](https://img-blog.csdnimg.cn/20190918140145169.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
单片机
单片机
nuoyigui9889
以微薄之力,为技术做点贡献。宇宙孕育的图标
展开
-
学习_C语言下使用ringbuffer实现任意数据类型的FIFO
思考及注意看:调试中的任意。原创 2024-05-20 20:42:41 · 177 阅读 · 0 评论 -
STM32单片机看门狗:独立看门狗和窗口看门狗有什么区别?
原创 2024-05-14 20:03:58 · 127 阅读 · 1 评论 -
ok_Keil实用小技巧 | Keil定制Hex文件名实现的方法
作者黄工,高级嵌入式软件工程师,分享嵌入式软硬件、AIoT(物联网+人工智能)、单片机、通信技术、开发工具、半导体、芯片、电子、行业资讯等相关内容(关注并回复【1024】查看更多内容)。最后额外说一下:这里主要针对Hex文件名,为了方便查找或追溯bug,最好在应用代码中,能通过某种方式(显示屏、串口输出等)获取当前软件的版本。提示:这里的内容可以根据自己项目情况进行修改,这里只是为了方便说明,整理的一个份简单的bat内容。,可以不用修改,bat文件的语法很简单,看注释,应该比较容易理解。原创 2024-05-11 18:31:34 · 1377 阅读 · 6 评论 -
Keil实用小技巧 | Keil定制Hex文件名实现的方法
原创 2024-05-11 09:16:40 · 437 阅读 · 0 评论 -
stm32的3种延时,原子的是非阻塞延时好用
原创 2024-05-10 20:39:12 · 439 阅读 · 0 评论 -
串口通信总结
无时钟线,为异步通信,但是是全双工通信,收发可同时进行。串口通信历史早,外界干扰要求小,通信稳定。原创 2024-04-13 09:17:01 · 111 阅读 · 0 评论 -
stm32的中断复习
(https://img-blog.csdnimg.cn/4fa918bc1ebb41118410bc9a41d4b296.jpg)原创 2023-12-01 20:51:13 · 381 阅读 · 0 评论 -
兼容jlink OB arm仿真器使用(杜邦线过长导致烧写总是失败)
2、模式选择SWD模式(接三根线);1、设置中要选择jlink;原创 2023-12-01 16:56:41 · 945 阅读 · 0 评论 -
*****独立看门狗总结实验
/ if(KEY_Scan(0)==WKUP_PRES) //如果WK_UP按下,喂狗。prer 为看门狗时钟预分频值(IWDG_PR 值),范围为 0~7。rlr 为看门狗的重装载值(IWDG_RLR 的值)。led灯常亮,程序跑死在Hard-Fault错误处。其中 Tout 为看门狗溢出时间(单位为 ms)。隔了5s,常亮的LED灯闪烁了一下,程序复位,IWDG_Feed();cubmax就主要是配置这两个值。对不可访问的内存地址进行写操作。prinf()//可以加个打印。原创 2023-08-22 15:25:10 · 214 阅读 · 1 评论 -
*看门狗各函数讲解
比如我们设定 prer 值为 4(因为4×2^4=64,所以 prer =4代表的是 64 分频,HAL 库中可以使用宏定义标识符 IWDG_PRESCALER_64),rlr 值为 500,那么就可以得到 Tout=64×500/32=1000ms,这样,看 门狗的溢出时间就是 1s,只要在一秒钟之内,有一次写入 0xAAAA 到 IWDG_KR,就不会导 致看门狗复位。实际上,当我 们调用了看门狗初始化函数 HAL_IWDG_Init 之后,在内部已经调用了该宏启动看门狗。原创 2023-08-22 08:40:34 · 288 阅读 · 0 评论 -
*看门狗2_思考多组看门狗对多任务的监控
如果被监视任务群有一个Task_x出现故障,TaskMonitor就不对看门狗定时器清零,也就达到了被监视任务出现故障时系统自动重启的目的。一般结合嵌入式操作系统,设置一个优先级级别最高的任务作为监视器,以监视各个应用任务是否正常运行,该监视器即为软件看门狗,该任务对其他任务都设定一个计时器,每个被监视的任务在设定的时间内对软件看门狗中相应的定时器定时清零,即喂软狗,在其他任务都正常工作的情况下,软件看门狗对内置的硬件看门狗定时器周期性清零,即喂狗。原创 2023-08-21 22:52:13 · 197 阅读 · 0 评论 -
*看门狗1
/溢出时间是600ms,比500ms多一点,如果要被监控的程序没有跑飞正常执行的话,那么。//while部分是我们在项目中具体需要写的代码,这部分的程序可以用独立看门狗来监控。//如果我们知道这部分代码的执行时间,比如是500ms,那么我们可以设置独立看门狗的。//执行完毕之后就会执行喂狗的程序,如果程序跑飞了那程序就会超时,到达不了喂狗的。//程序,此时就会产生系统复位。但是也不排除程序跑飞了又跑回来了,刚好喂狗了,所以要想更精确的监控程序,可以使用窗口看门狗,窗口看门狗规定必须。原创 2023-08-21 22:47:15 · 151 阅读 · 0 评论 -
串口收发流程项目级2
借鉴Linux机制。原创 2023-08-14 09:11:28 · 33 阅读 · 0 评论 -
串口通信收发项目级一
/数组长度 memset(g_uart[idex].DATA,0,g_uart[idex].DATA_LEN);//将要赋值的结构体数组清零 memcpy(g_uart[idex].DATA,bufff,g_uart[idex].DATA_LEN);//将此结构体的标志位标志位turememset(bufff,0,g_uart[idex].DATA_LEN);//将串口接收的数据bufff成功赋值给结构体后立即清零,方便下一次的接收 USART_RX_STA=0;原创 2023-08-14 08:44:50 · 67 阅读 · 0 评论 -
【无标题】freemodbus移植视频
https://m.baidu.com/video/page?pd=video_page&nid=12702754461940391853&sign=11965960830972084593&word=stm32%E4%B8%AD%E5%A6%82%E4%BD%95%E5%8F%8D%E5%A4%8D%E5%86%99%E5%85%A5%E8%AF%BB%E5%87%BAk%E7%BA%A7%E7%9A%84%E6%95%B0%E6%8D%AE&oword=stm32%E4%B8%AD%E5%A6%82%E原创 2023-08-11 07:53:19 · 53 阅读 · 2 评论 -
★自己的cube用原子的hal文件,编译太多错误,找半天,注意事项
2.最好用cube自己去重新配置接口驱动,工程就是源于sd卡的,居然发现hal库的函数,说生成的驱动某个函数的参数都多了一个。但是配置驱动最好重新生成接口配置文件。1.原子的f429很多的hal文件有屏蔽与没屏蔽的地方,导致明明包含了头文件,但是还是提示函数等没定义,到.c中看处于灰色状态,被条件屏蔽了。原创 2023-08-10 20:06:28 · 89 阅读 · 1 评论 -
★stm32串口接收数据处理
原创 2023-08-10 08:43:12 · 64 阅读 · 0 评论 -
★lpc1768串口fifo底层原理
(1)每接收一个字节数据,产生一次接收中断。由于串行数据传输的时间远远跟不上CPU的处理时间,等待串口发送完当前字节再发送下一字节会造成CPU资源浪费,不利于系统整体响应(在1200bps下,发送一字节大约需要10ms,如果一次发送几十个字节数据,CPU会长时间处于等待状态)。串口接收的数据,先放入接收FIFO中,当FIFO中的数据达到触发值(通常触发值为1、2、4、8、14字节)或者FIFO中的数据虽然没有达到设定值但是一段时间(通常为3.5个字符传输时间)没有再接收到数据,则通知CPU产生接收中断;原创 2023-08-10 08:30:21 · 183 阅读 · 0 评论 -
S3C2440串口FIFO模式的中断机制和处理机制(注意看与通信协议中的0X3F)
原创 2023-08-10 08:13:17 · 69 阅读 · 0 评论 -
★串口dma空闲中断好处3(串口猎人波形显示)
原创 2023-08-09 20:45:08 · 49 阅读 · 0 评论 -
★串口dma空闲中断好处2
原创 2023-08-09 20:43:54 · 34 阅读 · 0 评论 -
★★★串口dma+空闲中断好处
利用DMA接收串口数据,在一定程度上会节省CPU 的消耗。大多数串口接收都是接收一个字节就中断一次,如果串口上需要实时接收大量的数据,这就会导致频繁进入中断,这样一来,对处理其它逻辑很不利。利用DMA收发串口数据可以做到收发都不进入中断。分别将 rx、tx的数据缓存在队列中;收发数据放在需要外部周期调用的周期函数中;周期从DMA获取接收数据存到队列中,同时将发送数据(队列)转到DMA中;原创 2023-08-09 20:11:16 · 224 阅读 · 0 评论 -
一款状态机自动生成工具
原创 2023-08-01 08:24:47 · 196 阅读 · 0 评论 -
STM32查看当前中断信息的方法
原创 2023-07-30 10:48:08 · 325 阅读 · 0 评论 -
STM32 IAP固件升级跳转后卡死可能存在的原因
原创 2023-07-30 10:46:32 · 370 阅读 · 0 评论 -
STM32项目开发中超级实用的技巧(持续更新中...)
在HardFault_Handler()中增加软件重启命令NVIC_SystemReset(), 可以让它起死回生。而就算暂时没发现错误,发布后也可以在各种错误中加入此条指令来增加系统的稳定性。(当然要是重启对系统无影响的那种)同时呢,也可以增加看门狗,来增加系统稳定性,正常程序中不停的喂狗,一旦卡死,停止喂狗,就可以重启了。原创 2023-07-28 23:11:05 · 83 阅读 · 0 评论 -
中断中使用systick延时导致的问题
原来在main函数里当flag==1时,会执行Delay_Ms(1000)函数,但一旦外部中断等再次进入中断,中断也会执行Delay_Ms(1)函数,而此时,因为Delay_Ms()中用的是systick clock计数,执行Delay_Ms(1)过程中会重新装载计数值,从而导致退出中断后主函数中的Delay_Ms(1000)也会直接退出,从而导致延时时间出现错误!原创 2023-07-28 21:39:21 · 262 阅读 · 0 评论 -
STM32利用SYSTICK实现的延时函数突然不准了
最后我实验到1800是OK的,1900基本就是0了,所以我认为是这个装载值不能超过某个值所以我重新包装了一个S级延时。内核文件里也没规定范围,我还是怀疑这个问题,所以我试了 delay_ms(1000),结果时间是OK的!原创 2023-07-28 21:33:24 · 552 阅读 · 0 评论 -
STM32在中断里使用SysTick_delay延时引起的一些异常死机bug分析及其解决方案
但是,往往在中断使用delay函数,特别是在写大工程时,却经常遇到各种奇奇怪怪的bug,比如显示屏异常,串口数据异常,WIFI蓝牙异常等等,只要是涉及到通讯且在通讯中使用了delay延时的设备,均有可能出现异常,最严重的当然就是死机。其实网上也有许许多多的人在咨询这个问题但是得到的回答无一都是因为中断中延时占了资源,中断中不能停留太长时间等待,所以中断中一定不能使用delay但是我给出的答案是:中断中可以用delay函数,只需要修改delay函数!原创 2023-07-28 21:04:19 · 1458 阅读 · 1 评论 -
***研究systick非阻塞系统时钟+不进中断的调试过程,思考可方便移植到其它操作系统
**研究systick非阻塞系统时钟,思考可方便移植到其它操作系统。原创 2023-07-27 23:31:46 · 90 阅读 · 1 评论 -
***研究电子标签的系统
**研究电子标签的系统。原创 2023-07-27 23:30:08 · 33 阅读 · 1 评论 -
使用嵌入式开源组件--5条不翻车建议 嵌入式情报局
这或许就是开源的力量能够帮助很多开发者快速的进行现有软件资源的整合而为之所用,但这些软件和资源也存在优劣,一方面就是有开发者足够的能力把握这些软件,另一方面就是选择更加靠谱的开源组件来使用。你可能会认为更改库是很少见的,但你会惊讶,经常是团队开始使用某个操作系统、库或组件后,而当他们决定需要进行更改时,却不得不返回并重写代码。在开始使用开源组件时,至少应检查源代码的以下方面:使用圈复杂度度量的复杂性、从功能上确保其满足业务需求和目标、遵守最佳实践和编码标准(根据需要)、处理错误的能力、可测试性。原创 2023-07-26 19:43:18 · 40 阅读 · 1 评论 -
jlink之jscope(含qt串口示波器)
原创 2023-07-25 20:03:45 · 145 阅读 · 1 评论 -
调试串口不够用,RTT来帮忙
D:\Program Files (x86)\SEGGER\JLink_V646g\Samples\RTT (笔者安装D盘上其他人可不一定哦)会看到一个《SEGGER_RTT_V646g》的压缩包。在做嵌入式调试的时候经常用串口打印log。RTT全称Real Time Transmit,可以通过jlink接口打印数据信息。位于安装目录D:\Program Files (x86)\SEGGER\JLink;按照printf()方式使用log()即可。闲话少说上干货,下面就来一步一步实现RTT。原创 2023-07-25 17:20:59 · 299 阅读 · 2 评论 -
软件后期开发中的版本控制总结
原创 2023-07-16 00:44:37 · 41 阅读 · 6 评论