历史上的今天
返回首页

历史上的今天

今天是:2025年01月11日(星期六)

2020年01月11日 | STM32--今天下午遇到了两个BUG

2020-01-11 来源:eefocus

1、栈溢出


调试时发现有个调节PWM占空比的参数会莫名其妙的乱跳。观察代码,求这个系数的函数只在系统初始化的时候求过一次,之后就再也没有调用过。

单步执行代码,发现初始化时第一次运行时求出的系数是对的,但是全速运行后,这里面的系数就变了。


既然我没有调用函数来修改这个值,那肯定是被别的区域的值覆盖了。


打开map文件,看一下Trans_1_BaseStructre这个结构体周围都有哪些数据

ModbusSend这数组是用来发送串口数据的,空运行的时候里面全是0,那只可能是__initial_sp影响了。而__initial_sp是栈底地址,所以应该是栈溢出了。


想起来之前因为某种原因把栈空间改成512字节,所以才导致溢出。把栈大小改为1024字节后就都正常了。


2、串口不正常。用上位机软件发送一串数字,单片机收到的全是乱码,都不知道是啥。


首先检查了一下串口初始化的各个参数,并和以前正常的代码对比了一下,发现参数都正确。


一番对比后,发现是串口的波特率不对

我明明想初始化成4800bps,但是出来的是6635这个鬼东西。


心想莫非是系统时钟出问题了?可是仿真界面的时钟也是对的:

在定时器里面写了个IO口翻转的测试代码,发现IO口翻转的频率和设想的一致,所以系统的时钟应该没问题。


单步跟踪USART_Init(USART1, &USART_InitStructure)串口初始化函数,发现里面的RCC_GetClocksFreq(&RCC_ClocksStatus)这个函数得出的系统时钟竟然是24M。。


再单步运行进去,最终发现是HSE_VALUE这个宏定义没有修改

把这个宏定义修改成正确值后就都正常了。


这个宏定义也可以在keil的魔术棒里预定义,这样就不用改头文件了。截图如下:

推荐阅读

史海拾趣

EG & G Inc公司的发展小趣事

随着电子技术的不断发展,EG & G Inc公司不断进行技术创新和产品升级。公司投入大量资源进行研发,成功推出了一系列具有竞争力的电子产品。其中,某款高精度测量仪器在市场上获得了广泛认可,成为了公司的明星产品。此外,公司还积极开拓新的应用领域,将电子技术应用于医疗、环保等多个领域,为公司带来了新的增长点。

Boundary Devices公司的发展小趣事

随着技术的不断进步和市场的不断变化,Boundary Devices不断拓展其产品线,推出了包括开发板、OEM板和调制解调器等在内的多种产品。这些产品不仅满足了客户多样化的需求,也进一步提升了公司在行业中的竞争力。同时,公司注重创新,不断投入研发力量,推出了一系列具有自主知识产权的产品,为公司的长期发展注入了新的动力。

AKM [Asahi Kasei Microsystems]公司的发展小趣事

随着技术的不断进步和市场的不断变化,Boundary Devices不断拓展其产品线,推出了包括开发板、OEM板和调制解调器等在内的多种产品。这些产品不仅满足了客户多样化的需求,也进一步提升了公司在行业中的竞争力。同时,公司注重创新,不断投入研发力量,推出了一系列具有自主知识产权的产品,为公司的长期发展注入了新的动力。

Alliance Fiber Optics Products Inc公司的发展小趣事

在1995年,台湾人章启侨在美国加州创立了AFOP。当时的电子行业正处于光纤通信技术的蓬勃发展时期,章启侨凭借对市场的敏锐洞察,将公司的业务聚焦于光纤通信主被动元件的设计与制造。在创立初期,AFOP面临着技术、资金和市场等多方面的挑战,但章启侨带领团队不断攻克难关,逐渐在市场中站稳脚跟。

Bel Fuse公司的发展小趣事

随着电子行业的快速发展,Bel Fuse意识到要保持竞争力,必须不断进行技术创新。因此,公司加大了研发投入,推出了一系列具有创新性的电子元件产品。这些产品不仅满足了客户的需求,还为公司带来了可观的市场份额。同时,Bel Fuse也开始积极寻求全球扩张的机会,通过设立海外分公司和建立销售网络,进一步提升了公司的全球影响力。

Compact公司的发展小趣事

在快速发展的过程中,Compact公司始终注重品牌建设和文化传承。公司通过不断提升产品质量和服务水平,树立了良好的品牌形象。同时,公司还注重培养员工的归属感和忠诚度,形成了独特的企业文化。这种文化传承不仅为公司的发展提供了强大的精神动力,还使公司在激烈的市场竞争中保持了独特的竞争力。

问答坊 | AI 解惑

ARM嵌入式平台的VGA接口设计(ADV7120)

大多数嵌入式产品的显示终端都选择LCD,但在某些需要大屏幕显示的应用中,工业级LCD的价格比较昂贵,且现有的大屏幕显示器(包括CRT显示器和LCD显示器)一般都采用统一的15针VGA显示接口.三星公司ARM9芯片S3C2410以其强大的功能和高性价比在目前嵌入式产 ...…

查看全部问答>

我的智能家居方案v1.0,已经再准备材料中

从一开始接触单片机就萌发了这个想法,刚开始想做一个太阳能热水器的温度水位的无线采集装置的,动机很简单,原来的控制器只有一个,我们家农村的房子有5个卫生间和一个厨房都需要知道现在热水器的温度和水位是多少了,所以在实际应用中添加了这些 ...…

查看全部问答>

求助

朋友们帮我个忙,我急需一份“基于FPGA的数字钟设计”的毕业论文,用VHDL语言,实现的功能有:时分秒显示,准确计时,定时闹钟,时间复位,有一些资料也可以,非常感谢!如果有的话,请发送至我的邮箱xjb415730@126.com…

查看全部问答>

CSS2.2或3.3支持Vista或Windows7操作系统吗?

我现在遇到CCS2.2在Windows7下无法安装?该怎么解决?请求帮忙?…

查看全部问答>

求Smart RF05BB外围电路图

请问,各位大牛,我现在买了TI的simpliciTI协议下的开发套件,但是现在想换成zigbee协议进行开发,因此想自己画两个Smart RF05 BB的板子,但是在TI的官网上并没有找到其外围电路图,请问哪位有资源分享下一啊,不甚感激!!!…

查看全部问答>

NTC传感器设计工具,绝对原创

贡献小弟自己写的软件,用NTC设计温度传感器的时候,很好的工具。1、参数设置      NTC的相关参数:R25,B必须依照实际进行设置。      分压电阻与NTC串联分压,有上拉分压和下拉分压接法。按照实际设置分 ...…

查看全部问答>

跨导放大器求助

各位前辈,我是菜鸟,只有14分了,见谅!    下面说我的问题,做了一个电流/电压转换器,PCB如图1所示(4层板),但是用五位半万用表测,总是不对。结构很简单,按照图二的五种形式用五位半万用表测,测量结果如图中文字记述,有什么不对 ...…

查看全部问答>

[BBB方案提交]基于BBB 的简单频谱仪

实现功能 将音频频谱显示在BBB 的液晶屏上 硬件设计电路 音频采集电路,以及一些信号放大电路 软件设计 使用BBB的AD  将信号前端处理后的信号进行AD 转换,然后使用fftw进行傅里叶变换,根据需要决定是否使用neon指令集和posix线程库 预 ...…

查看全部问答>

【晒样片】+TI永远是那么的给力!!!

经过4天的等待TI的样品终于到了,走的是顺丰,一样的包装,一样的速度!!!赞一个 这次申请的三款芯片马上就用上了,谢谢TI! …

查看全部问答>

旋转倒立摆分享!!!

这是在国赛前做的,为准备国赛练练手,没做全题 动力用的是57步进;步进电机驱动器是 TB-6560;1000线编码器;F103主控。 使用编码器需要注意的问题:虽然使用编码器能够得到准确的角度信息,基本用不上滤波,可以直接使用,但是对角速度信 ...…

查看全部问答>