微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > STM问题

STM问题

时间:10-02 整理:3721RD 点击:

问下大家,上面的define该填什么,求助


这个是给条件编译语句定义常量用的,相当于在所有的源文件里面都有
#define XXXX
语句,其中XXXX 是你填在Define框中的字符串;
比如你在Define框输入有 FRAM,在你的任何源程序中,就可以这样:
#ifdef FRAM
i=0;
#else
WriteFlash(&i, 0);
#endif
而且不再需要使用#define语句声明FRAM.

USE_STDPERIPH_DRIVER这个事必须要定义的
STM32F10X_HD这个根据你用的芯片的Flash容量选择是HD还是LD还是MD

用户定义,用于条件编译的。这得看你的需要什么。条件编译的解释看沙发。楼上那个看stm32f10x.h文件中低21行。常用用的官方要用的USE_STDPERIPH_DRIVER,STM32F10X_HD,VECT_TAB_SRAM就这三个。第一个,用库函数你就得包含这个,头文件里有个
#ifdef USE_STDPERIPH_DRIVER
  #include "stm32f10x_conf.h"
#endif
第二个是不同容量对于寄存器的定义是不一样的,因为低容量的芯片有些功能没有当然相应的寄存器也就没有。
最后一个是用与SRAM调试。这个东西的条件编译会重指中断向量
#ifdef VECT_TAB_SRAM
  SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */
#else
  SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */
#endif
当然啦 如果你的程序还是在调试的时候没进中断手动加入下面几行程序在你的主函数里
#ifdef VECT_TAB_SRAM
        //NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#endif
有没有觉得我解释的好详细~~~

有,谢谢你哈,现在理解了

上一篇:液晶显示
下一篇:cse7759的疑问

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top