完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近调试STM8L152R8T6的一个产品,测试中发现跑了一晚上后,单片机卡死,外部复位没用,必须重新上电才有用。花了一天的时间来测试找问题,结果发现了问题,不知是不是芯片有bug。测试主函数如下:
CLK_Configuration(); // WWDG_Config(); // param_config_flag=read_param(); GPIO_Run_Config(); // USART_Config(); // DrvUART_Write(USER_COM,"RESETrn",7); // get_rht(); LCD_GLASS_Init(); Disp_RHT(); Get_Bat(); while(1) { WWDG_SetCounter(0xfe) ; } 烧入程序不停按复位键,正常情况液晶正常显示。大概60多次,液晶不显示,再按复位键也不起作用,芯片卡死。NRST脚一直低电平。 void Get_Bat(void) { uint32_t temp; CLK_PeripheralClockConfig(CLK_Peripheral_ADC1, ENABLE); ADC_Init(ADC1, ADC_ConversionMode_Single, ADC_Resolution_12Bit, ADC_Prescaler_2); ADC_SamplingTimeConfig(ADC1, ADC_Group_SlowChannels, ADC_SamplingTime_384Cycles); ADC_Cmd(ADC1, ENABLE); ADC_SchmittTriggerConfig(ADC1, ADC_Channel_17, DISABLE); ADC_ChannelCmd(ADC1, ADC_Channel_17, ENABLE); ADC_SoftwareStartConv(ADC1); WWDG_SetCounter(0xfe) ; while (ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == 0); temp = ADC_GetConversionValue(ADC1); ADC_SoftwareStartConv(ADC1); WWDG_SetCounter(0xfe) ; while (ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == 0); temp = temp+ADC_GetConversionValue(ADC1); ADC_SoftwareStartConv(ADC1); WWDG_SetCounter(0xfe) ; while (ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == 0); temp = temp+ADC_GetConversionValue(ADC1); ADC_SoftwareStartConv(ADC1); WWDG_SetCounter(0xfe) ; while (ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == 0); temp = temp+ADC_GetConversionValue(ADC1); temp= (temp*300)>>13; g_Bat_V=temp; } 而只要注销掉红色的代码后,再怎么按复位键都不会出现卡死现象。ADC转换触发会引发复位卡死呢? 大家有无遇到过这样的问题。原来的产品用的是STM8L152C8T6都没出现这个问题,怪哉! |
|
相关推荐
1个回答
|
|
这种情况可能是由于程序逻辑或硬件问题导致的。可能的原因和处理方法如下:
1. 程序逻辑问题: - 检查程序是否存在死循环、死锁等问题,特别是在循环中是否有可能导致卡死的条件。 - 检查是否有未处理的中断,可能中断导致了死锁。 - 检查程序是否有内存溢出或堆栈溢出问题,可以使用调试工具进行查看。 - 检查是否存在未初始化的变量或指针问题。 - 检查是否有不可预料的事件,如外部干扰等引起的异常情况。 2. 硬件问题: - 检查电源供应是否稳定,是否存在供电电压波动或干扰。 - 检查电源线路和电容是否连接正确,是否存在漏电等问题。 - 检查外部元件(如传感器、LCD、外设等)是否连接正确,是否出现了异常情况。 - 检查串口通信是否正常,是否有数据溢出或错误。 - 检查时钟配置是否正确,是否存在时钟频率不稳定的问题。 - 若有使用外部设备(如引脚、定时器等),需要确认其配置是否正确。 - 检查是否存在硬件故障,如芯片损坏、接触不良等。 当遇到卡死的情况时,可以先尝试软件复位或在程序中加入复位处理逻辑。如果软件复位无效,可以尝试重新上电。如果问题仍然存在,可能需要进一步调试和排除故障,包括使用调试工具查看变量状态、跟踪程序运行等。同时,也可以参考硬件相关的手册和应用笔记,了解更多关于芯片的特性和使用注意事项,以帮助解决问题。如果经过排查确认是芯片的问题,可以提交给芯片厂商以获取技术支持。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1771 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1619 浏览 1 评论
1070 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
724 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1673 浏览 2 评论
1936浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
729浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
569浏览 3评论
594浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
552浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 20:04 , Processed in 0.960670 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号