zoukankan      html  css  js  c++  java
  • 调试STM32/8 程序一些浅显又不易发现的问题

    1 串口映射printf后是否勾选上USE MicroLIB ?如果没有勾选可能不会进入main函数,目前不知道什么原因。

    2 定义计数用的变量cntx时是否大于255但是仍然用的u8 ? u8最大值是255 这个错误非常低级但是总是让人费很大的劲才找到。

    3 像下面这种语句 ,这条if后面多了个分号,非常容易被忽略。

    if(flag);
    {
    ;
    }

    4 如果定义了一个int16_t的变量A,和int32_t的变量B,当执行下列语句时应注意增加强制转换(在VC6.0里没有加就可以,但在MDK ARM中就会出错)。

    B=(int32_t)A<<16;

    5 STM32初始化结构体要尽量填完,因为初始化结构体定义时里面变量的值是随机的,如果不认为更改的话,可能会出现意想不到的错误比如我在一个论坛发的帖子

    6 在定义变量时尽量不要使用int类型,如果需要定义4字节的变量,可以用int32_t ,uint32_t或者s32,u32。避免被优化掉可以使用__IO int32,__IO uint32,vs32,vu32,volatile u32等,因为在使用int,unsigned int 来定义时,变量的大小可能是2字节(STM8 in IAR)或者4个字节(STM32 in MDK)。如果写一个程序希望从IAR上往MDK上移植时会带来些麻烦。

    7 stm8用库函数时,初始化过程中切记把CLK初始化放在第一位。因为初始化其他外设的时候库函数会获取当前运行频率,如初始化UART时,有CLK_GetClockFreq()。

  • 相关阅读:
    “中国半导体教父”张汝京:中国半导体只缺人才
    集群搭建
    Scrapy
    商品建模
    python wordcloud
    StaticFileMiddleware中间件如何处理针对文件请求
    Docker / CI / CD
    NET Memory Profiler 跟踪.net 应用内存
    SOS.dll (SOS Debugging Extension)
    Download the WDK, WinDbg, and associated tools
  • 原文地址:https://www.cnblogs.com/cntsw/p/3916586.html
Copyright © 2011-2022 走看看