初学STM32,在RealView MDK 环境中使用STM32固件库建立工程时,初学者可能会遇到编译不通过的问题.出现如下警告或错误提示: warning: #223-D: function "assert_param" declared implicitly;assert_param(IS_GPIO_ALL_PERIPH(GPIOx)); 这时候我们需要在“Target Options”中的“C/C++”选项卡中如图-2所示红框中添加USE_STDPERIPH_DRIVER.STM…
固件库模板下载 固件库模板新建过程: 下载我们上节的固件库文件 电脑新建一个文件夹命名为Fwlib-Template,在此文件夹下分别新建DOC Libraries Project User 这四个文件夹 其中 Listing Output 自动生成. 打开keil5 新建工程 保存在project (名称尽量别是中文)-->选择相应的STM32芯片-->更改source Group1名为为Startup,在项目里新建CMSIS FWLIB USER DOC 在电脑新建的Libraries下添…
stm32启动代码分析 (2012-06-12 09:43:31) 转载▼     最近开始使用ST的stm32w108芯片(也是一款zigbee芯片).开始看他的启动代码看的晕晕呼呼呼的. 还好在csdn上看到一片文章写的不错,分享下: 文章转载至:http://blog.chinaunix.net/uid-2595338-id-2139588.html,感谢原作者!   使用的芯片是 STM32F103VET,编译器使用 IAR ARM V5.5   设置头文件查找路径,例如: $PROJ_…
IAR和keil两个开发平台都是arm开发当中比较流行的平台,keil4的版本之间,可以兼容,但是版本4和版本5还是不兼容的,但是IAR的兼容性更加差,好像6.30.x之间是能够兼容的吧,没有实测过,以下是网上摘录的,根据其一步步,笔者实际测试成功,只是有一点小小的不一样需要更改. ================================================== 第一步 建立工程 首先建立一个工程,命名选择路径保存 文件名可以随便取第二步加载文件在工程路径下新建三个文件夹,分…
STM32出现HardFault_Handler故障的原因主要有两个方面: 1.内存溢出或者访问越界.这个需要自己写程序的时候规范代码,遇到了需要慢慢排查. 2.堆栈溢出.增加堆栈的大小. 出现问题时排查的方法: 1.添加软件断点,一旦在调试过程中出现Hard Fault 则会停在__breakpoint(0)处. void HardFault_Handler(void) { if (CoreDebug->DHCSR & 1) { //check C_DEBUGEN == 1 -> D…
STM32出现HardFault_Handler故障的原因主要有两个方面: 1.内存溢出或者访问越界.这个需要自己写程序的时候规范代码,遇到了需要慢慢排查. 2.堆栈溢出.增加堆栈的大小. 出现问题时排查的方法: 发生异常之后可首先查看LR寄存器中的值,确定当前使用堆栈为MSP或PSP,然后找到相应堆栈的指针,并在内存中查看相应堆栈里的内容.由于异常发生时,内核将R0~R3.R12.Returnaddress.PSR.LR寄存器依次入栈,其中Return address即为发生异常前PC将要执行…
1. include文件添加 Options->C/C++ Compiler 中的Preprocessor中增加一般的头文件 同时 在Assembler中的Preprocessor标签下添加$PROJ_DIR$\..路径,因为在会变文件中有对FreeRTOSConfig.h文件的引用. 2. 需要增加设置MCU型号,要不然会出现 编译器似乎无法识别__DSB 在 Options->General Options->Target 3. Assembler中需要添加FreeRTOSConfi…
目录 STM32F10xxx_Keil中添加的预定义宏 更新记录 STM32F10xxx_Keil中添加的预定义宏 更新记录 version status description date author V1.0 C Create Document 2018.10.15 John Wan status: C―― Create, A-- Add, M-- Modify, D-- Delete. Use Standard Peripheral Driver   在Keil MDK环境中使用STM32…
在原子的串口程序前加了几个数组定义,加了个对数组处理的函数,出现了HardFault_Handler的错误,不知道怎么解决!!! 因为局部变量是存放在栈区的,而全局变量在全局区(静态区),如果栈区较小,会产生溢出. 修改启动代码 Stack_Size      EQU   0x00000800 对 stack size 进行设定太小. 栈不能开的太大,除了变量需要,调用的函数参数也需要压栈. STM32出现HardFault_Handler故障的原因主要有两个方面: (1)内存溢出或者访问越界.…
初学STM32,在RealView MDK 环境中使用STM32固件库建立工程时,初学者可能会遇到编译不通过的问题.出现如下警告或错误提示: warning: #223-D: function "assert_param" declared implicitly;assert_param(IS_GPIO_ALL_PERIPH(GPIOx)); 这时候我们需要在"Target Options"中的"C/C++"选项卡中如图-2所示红框中添加USE_…