cathy 在 提交
外部晶振起振
一般情况下,外部晶振(如32.768K)上电就能起振,但是在连接MCU的情况下,有些MCU有一个OSC模块用于对外部晶振进行控制(模式选择),这种情况下,请参考数据手册,选择正确的模式以启动外部晶振。
内部flash读写
MCU 内部flash的读写擦除操作一定要小心,因为flash不能再擦除,写的同时又进行读,而MCU的程序一般保存在flash中,因此在程序运行的过程中,如果你同事对这个内部flash进行操作,一个不注意,就会发生错误(如写的时候,中断到来,程序需要读flash),最常见的现象就是MCU重启
MCU hard fault 的常见原因
数组越界,在copy和set的时候请使用安全函数 memcopy_s ,memset_s
- ps: memcopy_s ,memset_s包含在string.h头文件中,同时需要在文件开头声明#define __STDC_WANT_LIB_EXT1__ 1
#define __STDC_WANT_LIB_EXT1__ 1 #include "string.h"
MCU软件重启的方式
cortex m处理器拥有软件重启指令,一般相应的内核代码中包含了该函数,可以直接调用。如NXP的 KL27Z芯片使用cotex m0,其SDK的头文件core_cm0plus.h中就有如下代码
/** \brief System Reset \details Initiates a system reset request to reset the MCU. */ __STATIC_INLINE void __NVIC_SystemReset(void) { __DSB(); /* Ensure all outstanding memory accesses included buffered write are completed before reset */ SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | SCB_AIRCR_SYSRESETREQ_Msk); __DSB(); /* Ensure completion of memory access */ for(;;) /* wait until reset */ { __NOP(); } }
————————————————
版权声明:本文为CSDN博主「陶宝大人」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010548772/article/details/101673461
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。