
Cherry 的【 BUG 库】
【Cherry 的 BUG 库】
吴秀华Cherry
重技术、懂流程、轻管理
展开
-
【STM32】JTAG IO复用 (PB4、PB3、PA15)
最近在使用STM32F103VCT6 做项目时,其中PA15的IO一直输出高电平。 查看了好多次程序,发现IO初始化的程序也没有问题, 后来又试了直接将MCU的程序全擦掉,仍是输出3.3V.最后在芯片的数据手册上,看到了管脚的复用内容有一项是:JTDI。 后来又上网查了下, STM32默认启动时, PB4、PB3、PA15三个引脚不是普通IO,而是JTAG的复用功能,分别为JNT...原创 2017-10-12 19:43:58 · 3469 阅读 · 0 评论 -
【STM32CUBEMX】HAL 库的 Timeout=1 异常分析
背景STM32CUBEMX 在生成的库函数,基本上都有输入参数 Timeout。比如说:HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout);HAL_StatusTypeDef HAL_SPI_Receive(SPI_Handl...原创 2018-11-09 14:15:10 · 4727 阅读 · 9 评论 -
【MCU选型】MCU主频对选型的影响
前几天接了个小活,是用MCU与一个芯片进行SPI通讯,同时为此芯片提供一个100ns~2000us的周期的50ns的脉冲,还有其他特殊功能的脉冲。因为我手上有个STM32F207的开发板NUCLEO-F207ZG,我想都没想就直接用这个开发板写程序了,我第一天先是做了PWM波5MHz@50%Duty,还有个用定时器做单脉冲周期输出,这个一直没能实现100ns,最小只能实现2.5us,...原创 2018-11-06 15:46:02 · 7363 阅读 · 2 评论 -
【STM32】USART IDLE + DMA 异常解决方案
背景又出 BUG 呗~设计背景之前使用 STM32F207 做了一个 UART -> I2C 的转接板。UART 部分是用来与上位机进行交互的,接收数据采用 IDLE 中断 + DMA 的方式,发送数据采用阻塞的方式。上位机可以通过指令触发中转板定时采集 Slave 的数据,也会通过指令对 Slave 进行配置。问题描述先来说下问题是什么:若在 Tx 进行数据 A 发送的时间内接...原创 2018-09-28 20:28:43 · 7089 阅读 · 4 评论 -
【C 语言】数据类型的一致性
背景今天使用Visual Studio 2017 写一个程序时发现的一个问题,做下记录。目标实现定义 char 类型的数组,将部分参数与宏进行比较,输出比较结果。问题描述问题代码 char addbuf[8] = {0x5A, 0xA5, 0x00, 0x01}; printf("-91's HEX: %x\r\n", -91); // 打印 addbuf for (int...原创 2018-09-26 11:09:49 · 1014 阅读 · 0 评论 -
【Arduino】I2C Master 实现
背景前几天,有个海外的客户在使用 Arduino 连接产品(I2C接口)的时候,发现有异常。为了方便,我自己写了个 Arduino 的例程。使用 Arduino 例程的时候发现,官方的描述不太详细,走了些弯路。特此,写篇文章记录下。Arduino 的 I2C 相关函数Arduino 的封装库真的是非~非~非常的棒,I2C 就只有 10 个 API 函数。I2C 所用的库,称为:Wire...原创 2018-09-13 18:29:44 · 10453 阅读 · 3 评论 -
【STM32CUBE】ADC 电流检测未校准导致测量值异常
背景这两天在做一个工装的调试,其中有一项是对接入设备的电流进行检测。 测试发现 ADC 采样换算后的电流值与实际的电流值相差甚异。 后来才发现,在开启 ADC 采集之前没有对ADC进行校准所导致。ADC采集流程 Notice: 在进行测试之前,必须使用 HAL_ADCEx_Calibration_Start 函数进行 ADC 校准,不然测出来的值会有很大的误差。比如说,我现...原创 2018-08-15 11:54:59 · 4200 阅读 · 2 评论 -
【STM32CUBEMX】增加自定义 Groups 问题
背景最近在使用 STM32CUBEMX 生成工程,想新建几个 Groups 放自己的文件。 平常自建的工程,我都是在 Manage Project Items 里面增加的。在使用STM32CUBEMX 生成的工程,发现每次在Manage Project Items 里面增加Groups,Keil 直接就崩了,压根就建不上。下图中的InterFace就是我自建的 Groups ,点击 “OK”...原创 2018-07-19 09:36:05 · 1653 阅读 · 3 评论 -
【C 语言】数据类型取值范围造成的死循环
最近的项目进度比较紧张,程序修改十分仓促,在测试环节发现,部分机器出现工作一会死机的情况,大部分机器长时间工作是均工作正常。 死机的情况,通常会有如下几种情况:堆栈问题。Example:栈溢出。局部变量为大数组造成的栈溢出。堆溢出或内存泄漏。因为我的程序没有申请内存空间,不存在内存泄漏或者堆溢出的情况。上面的这两种情况,我都进行了查找和排查,确定不是堆栈引起的。中断向量。 我分...原创 2018-06-10 11:49:28 · 570 阅读 · 0 评论 -
【InterFace】STM32 I2C 死锁问题
最近在项目中设计了一个 IIC 模拟从机的程序。为了图方便,我随便拿了个 STM32F207 的开发板做 IIC Master,用 STM32CUBE 做了个程序,Master 的 数据发送和接收,都是直接调用 HAL 库的函数。 通过逻辑分析仪测试发现,每次主机出现错误后,IIC SDA 会被拉低,导致整个 IIC 总线被锁死了。后续的数据传输异常。现象如下图所示:后来我查看了 H...原创 2018-06-08 22:35:50 · 14584 阅读 · 12 评论 -
《Cortex-M3权威指南》笔记——chpt02 Cortex-M3概览
目录目录简介1。Cortex-M3:32位 处理器内核。2。CM3采用哈佛结构。CM3提供可选的MPU。寄存器组R0-R12:32位通用寄存器,用于数据操作。R13:堆栈指针SP。R14:连接寄存器。R15:程序计数寄存器。特殊功能寄存器。操作模式和特权级别内建的嵌套向量中断控制器存储器映射总线接口存储区保护单元(MPU)指令集中断和异常调试支持...原创 2017-08-27 20:27:44 · 1478 阅读 · 0 评论 -
《Cortex-M3权威指南》笔记——Chpt01 介绍
记录《Cortex-M3权威指南》的Chpt01 介绍(P1-P25)。1、ARM Cortex-M3处理器基于32位ARMv7架构。32位ARMv7架构支持高度成功的Thumb-2指令集。 Thumb-2: a.优点 : 强大、易用、轻佻、高效。 b.特点: Thumb-2是16位Thumb指令集的一个超集。 16位指令和32位指令并存(开创性)。 因此,在Thumb状态...原创 2017-08-27 15:11:19 · 1336 阅读 · 0 评论 -
【中断】中断嵌套导致中断失效
昨天在程序里增加了个新功能, 为了图方便, 在USART1的中断处理函数USART1_IQR中, 嵌套了段功能函数A_Function, 其中功能函数A_Function中有一段是循环等待USART2的中断处理函数USART2_IQR将指令接收标志S1_Flag置位。这个功能一直没有调通,因为发现S1_Flag一直没有置位。后来,把功能函数A_Function不再放到USART1_...原创 2018-03-23 15:53:37 · 1190 阅读 · 0 评论 -
【STM32】修改芯片型号后报 Error 的解决方案
背景前几天有个新需求,使用 STM32 的标准库(STD)做个产品的例程。之前已经做了个 HAL 的,但人家客户不干,非要 STD 的。拖了一周,想起来了,今天就开始做,但是懒啊,直接在网上找了个封装好了的 STD 例程,想直接修修改改,就完事了。没想到,例程的芯片型号(STM32F103VC)和我手上的开发板(STM32F103C8)不一样,虽然说是都是 STM32F10x 系列,如果要直接...原创 2018-12-24 21:08:44 · 4250 阅读 · 6 评论