![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
单片机开发笔记
文章平均质量分 65
Chasing_Chasing
这个作者很懒,什么都没留下…
展开
-
65 STM32F0系列 串口DMA循环接收实验记录
1.引言最近因为中断冲突问题,导致串口接收数据时随机丢失一两个字节。无奈串口的中断优先级不能是最高的,所以中断冲突问题明显存在,因此需要串口使用DMA方式来接收数据,从而规避串口接收数据丢失问题。2.DMA配置经验 首次使用dma,需要了解一下dma的知识。 1.首先最重要要了解的一点就是,dma接收数据一定要接收到指定长度的数据,或指定长度的一半数据才能产生接收中断,如果数据没有达到一半或指定长度,就无法产生dma接收数据通知。 ...原创 2022-04-01 17:56:02 · 3621 阅读 · 0 评论 -
64 串口测速工具及实验
最近搞usb虚拟串口,需要测试虚拟串口能达到的最大速度。然后人算肯定不太精准,需要用工具来测试,所以搞了一晚上用qt写出了一个简单(不太精准的)的测速工具。小包误差太大,大包数据发送效果还能接收吧(反正没超过理论值),所以认为还是成功的。原创 2022-01-22 14:51:48 · 14036 阅读 · 8 评论 -
61 stm32 USB键盘一直在发送数据
1.引言 今天测试USB键盘的时候,按照下述格式发送数据8后,电脑一直接收到8,然后8888888888888888888888888888888888....................源源不断!2.问题 在调用发送数据后,mcu将键值拷贝到HID发送数据区(USB键盘是8个字节),当HID设备检测到该区域数据不为0时,会一直调用把该部分的数据发送出去。知道原因后,我们在拷贝完这个数据后,将HID的发送数据区域清0,即可阻止一直发送数据...原创 2021-12-13 18:30:12 · 1509 阅读 · 1 评论 -
52 单片机复位原因查找
47.1 引言本次开发中遇到一个问题,就是使用stm32f030c8t6的时候,要进行写flash操作,调用FLASH_ProgramHalfWord函数导致段错误,程序代码是从stm32f103移植过来的,都测试过没啥问题,但是却遇到了一写flash,就马上产生了HardFault_Handler错误,坑!!47.2解决方案经过一番了解!就不跑进 HardFault_Handler了。应该是stm32的flash只支持对字的操作不支持对字节的操作吧。...原创 2021-09-28 17:12:55 · 1199 阅读 · 0 评论 -
51 单片机AD采集电压值的坑
1.引言最近又在忙低功耗相关项目,需要对设备电池进行电压进行检测,ad采集的例程原厂都有给到,相关的文件说明都有,但是理想和现实还是比较骨感的,采集的电压总是不对,调了两天,赶在周末前终于发现了问题。完美!!可能稍微不完美的就是原厂的技术支持,根本就不支持,发了微信都不回复,态度不太行。。。。。不过最后还是自己发现了问题,真解气!2.现象电压检测使用的是单片机的引脚,但电池电压一般为4.2v,大于GPIO的承受电压3.3v,所以需要一个分压电路,分压电路原理图如下图所示。上图中R7.原创 2021-09-03 18:56:36 · 9017 阅读 · 26 评论 -
50 IIC通信速度下限
1.引言这两天又来调IIC了,很不开心的是,以前的GPIO模拟IIC的代码,移植到新单片机的时候,发生了不幸的事情,无法正常通信了!!!!!。然后经过了近一天的各种方法的问题排除,发现IIC主机发送数据后,SDA引脚就一直是低电平,从机把引脚拉死了,原最后发现原因是SCK时钟频率不对,导致从机罢工!然后继续调试,最后在调试过程中生出一个想法,为什么从机死掉了,对比一下可以的IIC时序图,波形一毛一样,然后直觉的突然看到不同的地方!!!SCK的时序的频率是不是一样,然后经过查看,发现可以的IIC的频率原创 2021-05-27 19:10:35 · 1679 阅读 · 0 评论 -
48 STM32普通IO模拟usart串口
1.引言本次实验的原因是因为最近接触到一款单片机,只有一个串口,但项目中要用到至少2个串口,所以一个串口好少啊,没办法,只能另寻出路,通过普通IO来模拟usart串口了。然后,经过一番资料搜索,代码搬运,终于成功,组合出一个io模拟串口的模块,该模块成功实现了9600-8-N的串口数据收发,为方便记忆以及学习,特此记录!2.普通IO模拟串口原理普通io模拟串口,也需要严格的遵循串口协议规则,具体的规则可百度一下。当波特率是115200时,发送1bit数据需要 1/115200 = .原创 2021-05-06 18:08:02 · 10456 阅读 · 15 评论 -
47 stm32f0 IAP跳转APP后中断无法进入
47.1 引言本次问题叫做:stm32f0 IAP跳转APP后中断无法进入之前弄了stm32f103的iap程序,因为stm32f103有中断向量起始地址控制器,直接修改VECT_TAB_OFFSET的值,然在APP里面NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x2400);,这样就行了,但是cortex-m0不行,因为没这个功能,所以导致需要较为特殊的处理。然后我根据网上的资料,仿照stm32f030单片机的的机制去做了另外一款同样是cortex-m0的IA原创 2021-04-29 11:33:27 · 1838 阅读 · 4 评论 -
46 合泰BS8116A-3触摸按键踩过的坑
46.1 引言今天真的太坑爹了,一个触摸按键快搞了一个下午,原因是自己对文档的阅读不够仔细,导致浪费时间,并且差点要放弃调试了,幸好带着一定可以的决心,然后最后搞定了。46.2 合泰BS8116A-3触摸按键调试合泰BS8116A-3触摸按键,我使用的是中断模式,中断来了去读取数据,然后使用的是模拟IIC,前后对比可以的和不可以的,IIC时序,发现时序一样,就是读不出来。然后各种检查,最后发现原来是中断触发,不能用上升沿来搞,要用下降沿,其原因如下图示:结论:一定要仔细阅读文..原创 2021-04-15 17:33:34 · 3280 阅读 · 0 评论 -
45 STM32 IIC主机、从机通信实例(ma51t12b触摸按键芯片)
45.1引言最近在研究触摸按键板的通信,按键板主要用到的通信协议为IIC,事实上IIC的例子有很多,但大都都是模拟IIC的主机(引用某网友的评论),从机这边的内容还是比较少。早在两三年前就跟着原子哥的学习资料,学习并操作过IIC的eeprom器件,但是依葫芦画瓢,虽然看了IIC的协议,但是还不算很透!!!只能说熟悉。最近接到这个项目,用到IIC通信,原本很快就搞定了,但是遇到了一些问题,发现是从机地址写错了(感觉是芯片厂商故意在文档里面写错的),不过换算挺好的,借此机会算是把IIC较为透彻的跑一遍。原创 2021-03-26 12:54:21 · 3303 阅读 · 8 评论 -
44 RT-Thread Nano移植到stm32F103CBT6 (STD标准库)
一、前言最近在学习rt-thread,然后网上有介绍用RT-Thread Studio和stm32cubex结合进行开发,还有用rt-thread nano提供的pack直接开发,但是这种方式真的不太行,对于新手而言,不能很好的了解整个代码的结构。为此,就怀着跟前面网友一样的心思,准备要自己拷贝代码,一步一步来对rt-thread进行移植,然后发现还是挺简单的,如果rt-thread已经移植过相应的cpu的话,那简直移植的方便就超级简单了。本文章把rt-thread nano移植到stm32f1原创 2021-03-10 19:56:31 · 4051 阅读 · 5 评论 -
42 单片机栈溢出及程序栈大小设定
一、背景最近自己在开发单片机应用程序,开发过程并不顺利,问题在当我在工程里添加了好几个模块的代码之后,发现程序不正常工作了,进入一个函数卡死在里面,但是30s后居然又跑出来了,真是奇怪。然后同一个函数,在不同地方调用居然产生不同的结果。第一个:调用函数层数不多,就3层。第二个:调用层数达到6层两个都是调用同一个函数TPDU_Exchange,但是结果行为不一样。没办法,第一次遇到这事,想不明白,就能扔一边,然后跟同事一起去吃个饭,然后一拍大腿,是不是栈溢出了!!!! 没想到这拍的原创 2020-09-19 22:11:10 · 1608 阅读 · 0 评论