其实单从字面意思理解就是“使用标准外设驱动”,在C/C++预定义中加入“USE_STDPERIPH_DRIVER”就是允许“使用标准外设驱动”了。至于加入的“STM32F10X_HD“同样能在文件”stm32f10x.h“通过如上所述的方法通过功能查找来进行解释,其实它也是对于对应硬件的某些定义起开关作用罢了。
开辟堆的大小为0x00000200(512字节),名字为HEAP,NOINIT即不初始化,可读可写,8(23)字节对齐。-heap-base表示堆的起始地址, heap-limit表示堆的结束地址。堆是由低向高生长的,跟栈的生长方向相反。 堆主要用来动态内存的分配,像malloco函数申请的内存就在堆上面。这个在STM32里面用的比较少。 初始化中断向量表 ...
启动文件位于标准库的下面目录中:STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport...
登录后复制__Vectors为向量表起始地址, __Vectors_End 为向量表结束地址,两个相减即可算出向量表大小。 向量表从 FLASH 的0地址开始放置,以4个字节为一个单位,地址0存放的是栈顶地址, 0X04 存放的是复位程序的地址,以此类推。从代码上看,向量表中存放的都是中断服务函数的函数名,可我们知道 C 语言中的函数...
本文对STM32启动文件startup_stm32f10x_hd.s的代码进行讲解,此文件的代码在任何一个STM32F10x工程中都可以找到。 启动文件使用的ARM汇编指令汇总 Stack——栈 Stack_Size EQU 0x00000400 AREA STACK, NOINIT, READWRITE, ALIGN=Stack_Mem SPACE Stack_Size__initial_sp ...
h中有这以下代码:#ifdef USE_STDPERIPH_DRIVER #include "stm32f10x_conf.h"#endif 由此可只 添加USE_STDPERIPH_DRIVER宏定义是为了加载stm32f10x_conf.h文件。 View Code 代码可知,添加STM32F10X_HD宏是选定芯片内部资源定义。 到这里,新建工程就完成了,编译调试,无误后就开始代码之旅吧。
根据STM32F10x的库文档和项目需求,正确设置 use_stdperiph_driver 宏定义。通常,这个宏不需要任何值,只需要被定义即可。 修改编译命令,将 -Duse_stdperiph_driver.stm32f10x_hd 替换为 -Duse_stdperiph_driver。 重新编译验证: 在修正问题后,重新编译项目,确保错误不再出现。 如果项目仍然无法编译通过,检查是...
stm32f10x_conf.h”中我们通过代码#include“stm32f10x_gpio.h”来实现这个操作。 其实单从字面意思理解就是使用标准外设驱动,在C/C++预定义中加入 USE_STDPERIPH_DRIVER就是允许使用标准外设驱动了。至于加入的 STM32F10X_HD同样能在文件stm32f10x.h通过如上所述的方法通过功能查找 来进行解释,其实它也是对于...
SystemInit在库文件system_stm32f10x.c 实现,用来初始化STM32的一系列时钟,把系统时钟设置为72MHZ。STM32的时钟比51 单片机复杂,需要经过一系列的配置才能达到稳定运行的状态。 __main 其实不是我们定义的,当编译器编译时,只要遇到这个标号就会定义这个函数,该函数的主要功能是:负责初始化栈、堆,配置系统境,并在...
stm32开发环境加入STM32F10X_HD和USE_STDPERIPH_DRIVER两个宏 1. 为什么要定义USE_STDPERIPH_DRIVER这个宏? 程序的执行是从“main.c”文件开始的,其中必须包含有头文件“stm32f10x.h”。 我们打开“stm32f10x.h”,按下“Ctrl+F”键,查找USE_STDPERIPH_DRIVER,在“Find What”栏中输入“USE_STDPERIPH_DRIVE...