小批量的产品出现的一点bug

2019-08-12 17:14发布

本帖最后由 abcxuyangyang 于 2017-10-24 19:16 编辑

由于产品需求:主控芯片选用STM32F051  无线模块选用si4432,作为从机,通信方式使用是spi模式;
问题描述:在测试的过程中,作为从机STM32F051 si4432收到数据之后,会让一个不搭噶的单片机引脚PC12输出数据发生反转(PC12初始化输出为1),通信协议里不包含任何会让PC12输出状态改变的数据;

最后调试:经过各种验证和在线仿真,首先确定了,PC12引脚不带任何复用功能,其次,PC12我初始化之后,让其输出为高,之后再不做任何改变,程序运行一段时间之后,PC12引脚状态发生改变。再次确定作为从机,si4432接收的数据里不带任何修改PC12状态的数据;
其次经过在线仿真发现,单片机除了PC12受影响,其他引脚都不会受到影响;


结果:抓头挠腮,想了好久,还是想不到解决方法,唯一的方法就是不用PC12,方法可行。但,这个问题还是没有解决,放在心里一直不舒服,所以想咨询下,用过SI4432的有没有遇到过这个问题的,顺便问下,keil软件给内存设置断点的教程,有的可以分享下吗,

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
abcxuyangyang
1楼-- · 2019-08-13 22:08
小温 发表于 2017-10-24 16:07
看一下PC12是芯片内部哪个外设有用到,是不是该外设的状态变化导致引脚翻转

发现这个问题时候,也考虑了会不会是引脚复用问题,甚至只给他初始化,之后不再改变,程序跑起一段时候之后,还是只会影响PC12这个引脚,其他的IO口还是不会改变
abcxuyangyang
2楼-- · 2019-08-14 02:56
yklstudent 发表于 2017-10-24 15:43
设置断点还需要教程????自己根据需要随意设置就好了,不过也要看你的仿真/调试器,可能断点不能设置的 ...

想看下keil内存的断点设置教程,来查看下数据寄存器的数值在哪里变化的
abcxuyangyang
3楼-- · 2019-08-14 06:39
simms01 发表于 2017-10-24 16:43
引脚状态改变 不是自己 就是外部   先把外部断开 看他还变不变  然后一段一段屏蔽功能  很容易就找出来了

开始时候,只给PC12引脚初始化,之后不再人为的改变这个引脚状态,一步步来定位,看看到底在哪里让PC12的 ODR相应位清零了 ,调试发现每次ODR清零,都是在刚进入定时器中断时候。所以不好定位了,比较尴尬。奇怪的 是,在验证其他引脚时候,都不会改变,唯独PC12,比较尴尬,在想会不会在PCB走线的被干扰了,或是制版的问题
操作系统
4楼-- · 2019-08-14 09:50
 精彩回答 2  元偷偷看……
jinggx
5楼-- · 2019-08-14 12:14
换个引脚用
simms01
6楼-- · 2019-08-14 14:44
abcxuyangyang 发表于 2017-10-24 19:36
开始时候,只给PC12引脚初始化,之后不再人为的改变这个引脚状态,一步步来定位,看看到底在哪里让PC12的 ...

把中断里面的程序清干净  只抹除中断标志位  再看

一周热门 更多>