MCU开发遇到的一些小问题

cathy的头像

外部晶振起振

一般情况下,外部晶振(如32.768K)上电就能起振,但是在连接MCU的情况下,有些MCU有一个OSC模块用于对外部晶振进行控制(模式选择),这种情况下,请参考数据手册,选择正确的模式以启动外部晶振。

“MCU开发遇到的一些小问题"

“MCU开发遇到的一些小问题"

内部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)。