完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
前言
STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex®-M0,M0+,M3, M4和M7内核,按内核架构分为不同产品: 主流产品(STM32F0、STM32F1、STM32F3)、超低功耗产品(STM32L0、STM32L1、STM32L4、STM32L4+)、高性能产品(STM32F2、STM32F4、STM32F7、STM32H7),本文主要针对主流产品STM32F1产品讲解如何在MDK集成开发环境创建一个工程并且移植ST标准库,后续文章将会讲解移植FreeRTOS并且介绍FreeRTOS嵌入式实时系统的工作原理,使其运用于实际产品开发中。 一、 集成开发工具安装与STM32F1标准库下载 1、本文将需要用到MDK集成开发工具,下面链接的文章从Keil工具的下载到安装和破解都讲解的比较详细,还没有此工具的读者可以参考以下链接。 2、STM32F10x_StdPeriph_Lib下载,请参考下面链接的文章去获取STM32F1标准库,本文已下载好STSW-STM32F054型号库。如图1所示。 图1 二、 基于MDK创建工程 1、 创建一个工程文件夹,并且在文件夹里创建三个文件夹并分别以CORE、STM32F10X_LIB、USER命名。 2、 将STM32F10x_StdPeriph_Lib_V3.5.0里跟内核相关的几个文件(core_cm3.c/core_cm3.h、startup_stm32f10x_hd.s、stm32f10x.h、system_stm32f10x.c/system_stm32f10x.h)拷贝到CORE文件目录里,几个文件路径如图2、图3、图4所示。 图2 图3 图4 3、 将STM32F10x_StdPeriph_Lib_V3.5.0里的库函数文件拷贝到STM32F10X_LIB文件夹里,文件夹路径如图5所示。 图5 4、 打开keil软件,依次点击菜单栏里的Project->New uVision Project,命名工程名称,这里的工程名称为“MDK工程创建”并保存在前面新建的文件夹USER里,如图6所示。 图6 5、 选择芯片型号,由于我们是基于F1系列产品的STM32F103ZE进行创建工程,所以我们选择STMicroelectronics->STM32F1 Series->STM32F103->STM32F103ZE如图7所示。 图7 6、 往工程添加分组,这里主要三个分组,分别为USER、CORE、LIB,并往CORE添加core_cm3.c、startup_stm32f10x_hd.s、system_stm32f10x.c等与内核相关文件,往LIB添加STM32F10X_LIBsrc里的库文件,具体步骤见图8、图9所示。 图8 图9 7、 添加宏定义及头文件路径,具体步骤见图10,图11。 图10 图11 8、 创建一个main.c文件,里面可以很简单的创建一个main函数并将该文件保存在USER目录下,并添加进USER组里分别如图12、图13所示 图12 图13 9、 开始编译,编译结果如图14所示,从编译结果看没有报错,这意味着整个工程已创建成功 图14 10、 我们继续完善main.c当然可以自己添加进代码,由于做演示,这里拷贝一段点亮LED的代码进去,并且再次进行编译,此时编译通过。 #include "stm32f10x.h" /******************************************************** 函数名:void LED_Init(void) 功能描述:灯端口初始化 被调用函数清单: 调用本函数清单: 被访问的表: 被修改的表: 输入参数: 输出参数: 返回值: 其它说明: ********************************************************/ void LED_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE); //使能PB,PE端口时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED-->PE.5 端口配置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz GPIO_Init(GPIOE, &GPIO_InitStructure); GPIO_ResetBits(GPIOE,GPIO_Pin_5); //PE.5 输出高 } int main( void ) { LED_Init(); while(1) { ; } } 11、 烧录进MCU配置,这里使用J-LINK进行烧录见图15,当然需要添加芯片见图16 图15 图16 12、 下载程序只需执行F8键或者点击菜单栏上的Load图标即可,讲解到这里基本整个工程已经创建成功了。 最后感谢您的阅读,如果阅读本文章过程中有疑惑或者文章有纰漏的地方欢迎评论区留言! |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1617 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1543 浏览 1 评论
977 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
683 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1595 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
644浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
515浏览 3评论
531浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
504浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 06:13 , Processed in 0.919320 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号