完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我用的芯片是psoc6,基于psoc creator4.4,基于CE217633这个示例,在M4 的main函数加入NVIC SystemReset(), 实现系统每隔5秒重新启动,但系统有10%的概率会挂死。添加的代码如下:
int main() { UART_START(); printf("resetrnrn"); Cy_SysLib_Delay(5000); NVIC_SystemReset(); ..... } 请问 NVIC_SystemReset() 这样用不安全吗? |
|
相关推荐
1个回答
|
|
在使用NVIC_SystemReset()函数时,需要确保在使用之前完成所有必要的清理工作。该函数会导致芯片进行硬件复位,重启系统,所有未完成的操作都会被中断。
如果系统在调用NVIC_SystemReset()后出现了挂死的情况,可能是由于某些未完成的操作或资源被复位导致的。你可以尝试以下方法来解决问题: 1. 确保在调用NVIC_SystemReset()之前没有未完成的关键操作。例如,在写入数据到外设之后,确保数据已经成功完成。 2. 在调用NVIC_SystemReset()之前,尝试等待一段时间,确保所有操作已经完成。可以使用Cy_SysLib_Delay()或其他延时函数来等待一段时间。 3. 检查是否有其他可能导致系统挂死的原因。例如,检查是否有意外的中断发生,或是否有其他未处理的异常情况。 4. 可以尝试重新编译和下载固件。有时,编译器可能会生成错误的代码或者固件下载不完整,导致出现问题。 5. 将NVIC_SystemReset()函数放在一个单独的线程中执行,确保没有其他操作会干扰到它。 6. 如果问题仍然存在,尝试使用其他的软件复位方式,例如使用软件复位寄存器或重新初始化系统模块。 需要注意的是,NVIC_SystemReset()函数是为了进行系统重启而设计的,使用它可能存在风险。在使用该函数时,要确保不会造成数据丢失或其他不可预测的问题。最好在控制系统重启的时机和条件,以尽量减少潜在的问题。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》第三十章 DHT11数字温湿度传感器
522 浏览 0 评论
656 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
978 浏览 0 评论
1042 浏览 2 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
735 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12045 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 13:54 , Processed in 0.998347 second(s), Total 73, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号