STM32 keil5 MDK新建工程教程这是根据B站江科大stm32教程,所整理的一篇如何新建一个stm32工程。本教程所需文件包源于B站江协科技
1、确定一级目录确定一个文件路径,新建文件夹用于以后存放stm32工程。这里我新建了一个project文件夹作为stm32工程的一级目录。
2、打开keil新建工程
在上步中的一级目录下,新建文件夹作为该工程的存放目录,我新建为学习记录,并在该目录下设置工程名
新建好后,点击保存,将会弹出选择芯片
3、选择芯片我使用的是STM32103C8T6
点击ok,将弹出快速新建工程小助手。直接叉掉
4、添加启动文件上步完成后,打开工程所在文件夹,文件结构如下(keil新建工程后自动生成的)
新建Start文件夹(启动文件)将固件\\STM32F10x_StdPeriph_Lib_V3.5.0\\STM32F10x_StdPeriph_Lib_V3.5.0\\Libraries\\CMSIS\\CM3\\DeviceSupport\\ST\\STM32F10x\\startup\\arm该目录下的所有文件复制粘贴到Start文件夹下。
继续将 固件库\\STM32F10x_StdPeriph_Lib_V3.5.0\\STM32F10x_StdPeriph_Lib_V3.5.0\\Libraries\\CMSIS\\CM3\\DeviceSupport\\ST\\STM32F10x 路径下的三个文件复制粘贴进Start文件夹下。
添加内核寄存器描述文件将 固件库\\STM32F10x_StdPeriph_Lib_V3.5.0\\STM32F10x_StdPeriph_Lib_V3.5.0\\Libraries\\CMSIS\\CM3\\CoreSupport 文件夹下的文件复制粘贴到Start中
最后Start内文件结构如下
5、载入工程重命名组按顺序单击进行重命名,为Start
载入启动文件
选择ALL FILES
按照该表参照自己的开发板的型号,选择启动文件,我这里选择后缀为md.s文件点击add
继续添加Start文件夹中的.c和.h文件,添加完成后点击Close,完成后如下(每个文件图标上都有一个小钥匙,代表只读,不能更改)
6、添加头文件路径单击魔术棒,选择C/C++,点击Include Path后的三个点,双击空白出现三个点并单击,弹出文件选择弹窗,选择Start,单击选择该文件夹。
点击OK
7、编写主函数为了让工程目录更为清晰,在该工程文件夹下,新建文件夹User
载入工程
改名为User
添加.c文件(main.c)
8、配置调试器等用的什么选什么,我用的ST-Link选中运行前自动重置,否则在每次上传完程序后都需要手动按复位键进行复位
9、寄存器开发执行就可以在该文件下编写主函数,进行运行。注意到此为止仅可以进行寄存器开发
#include "stm32f10x.h" // Device header
int main(void){ RCC->APB2ENR = 0x00000010; GPIOC->CRH = 0x00300000; GPIOC->ODR = 0x00002000; while(1);} AI写代码c运行
12345678910结果
10、使用库函数进行开发在工程目录下新建文件夹Library用于存放库函数
打开 固件库\\STM32F10x_StdPeriph_Lib_V3.5.0\\STM32F10x_StdPeriph_Lib_V3.5.0\\Libraries\\STM32F10x_StdPeriph_Driver 该路径
将inc和src文件夹复制粘贴至Library中
11、载入库函数至工程同User的创建方法一致,新建组Library,将文件目录Library下inc和src中的所有文件添加进Library组
12、添加库函数配置文件和中断函数文件复制粘贴 固件库\\STM32F10x_StdPeriph_Lib_V3.5.0\\STM32F10x_StdPeriph_Lib_V3.5.0\\Project\\STM32F10x_StdPeriph_Template 路径下的如图所示的三个文件至工程的User目录下
将该三个文件载入到工程中去
13、添加宏定义此处有条件编译
需要对USE_STDPERIPH_DRIVER进行宏定义
14、设置头文件路径将Library/inc路径与User路径设置到包含目录中去
15、尝试编译
编译成功,表示我们新建工程成功!!!!
16、使用库函数点亮小灯
#include "stm32f10x.h" // Device header
int main(void){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_ResetBits(GPIOC, GPIO_Pin_13); while(1);}AI写代码c运行
1234567891011121314
————————————————版权声明:本文为CSDN博主「羽码」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/m0_52019684/article/details/147015458