STM32 自学笔记(二) keil MDK建立新工程
建立工程时又出问题了!有点郁闷。
一、MDK建立新工程
1.老提示s32未定义,原因是未添加stm32f10x.h到USRE
2.添加后仍报错,对比例程发现少了system_stm32f10x.c
stm32f10x_it.c 两文件,将其复制到USER。
3.复制到USER后仍有错内容:
stm32f10x_it.c(78): error: #1270: entity declared as alias cannot havedefinition
D:\electric\KeiluV4\ARM\Inc\ST\STM32F10x\stm32f10x_it.h(36): error: #1268-D: declaration aliased to undefinedentity "SysTickHandler"
D:\electric\KeiluV4\ARM\Inc\ST\STM32F10x\stm32f10x_it.h(35): error: #1268-D: declaration aliased to undefinedentity "PendSVC"
这里是将SysTick_Handler重定向到SysTickHandler了,我记得ST的启动文件中的中断向量表里是SysTick_Handler,这里为何重定向至SysTickHandler,
难道是用了rtos并重写了SysTick中断?如果没用rtos就将stm32f10x_it.h里的滴答中断的声明改为voidSysTick_Handler(void);
就是去掉后面的__attribute__ ((alias("SysTickHandler")))
4.关于建立工程时需注意的几点
在USER中需添加的文件有 如下五个:
stm32f10x.h
system_stm32f10x.c
stm32f10x_it.c
stm32f10x_conf.h
stm32f10x_it.h(需按上述第三步修改)
二、自己建了一个小分立文件
1.包含两部分
(1).c 文件中需包含函数中所用的硬件如LED,KEY等的头文件
(2).h 先包含库文件#include "stm32f10x.h",再自定义头文件名称,
然后声明void该函数中所具体包含的函数
格式如下:
#include "stm32f10x.h"
#ifndef fun_H
#define fun_H
void fun1(void);
void fun2(void);
void fun3(void);
#endif
2.工程设置
(1)将文件所在路径添加至工程路径 c/c++中的include pathes
(2)将文件夹添加至工程,project
不错 就是这样建的
现在正在看smt3
看看,学习一下!
好贴就要顶一顶~~~~·
还是有问题啊,不知道怎么回事。E:\Program Files\STM32\Keil\ARM\INC\ST\STM32F10x\stm32f10x_type.h(62): error: #101: "ERROR" has already been declared in the current scope
错误提示stm32f10x_type.h文件已声明,你是不是把默认的启动文件添加了,如果是的话,在刚建立文件在弹出“是否添加启动文件”对话框时点击“否”