stm32的简单程序的编译
工欲善其事必先利其器,提及stm32程序我们先不谈,我们先从mdk开始今天的编程之路。
MDK 是 Microcontroller Development Kit的缩写,是ARM公司出品的,是针对ARM的处理器,尤其是Cortex-m内核处理器的最佳开发工具。
Stm32是使用了ARM内核的嵌入式单片机,拥有这高性能,低成本和低消耗的特点。所以我们今天使用它。
MDK5.10 安装过程
参考连接:https://blog.csdn.net/weixin_42625444/article/details/103262415
1、打开MDK5.10安装包,点击next进入下一步。点同意对勾,继续安装,
2、选择安装目录和pack目录,点击next。
3、输入姓名、公司和e-mail,继续安装。
4、进入安装进度条。
5、点击Finsh完成,进入pack installer界面。
打开pack installer可能会产生如下情况,但对今天编程不影响,可以忽略。我网上也没找见解决方法,希望大佬指点。
接着下载安装 CMSIS 和 STM32F103的支持库。
6、打开keil uVision5程序,程序是试用版本,可以选择用keygen破解。
在FIle中License Mangement,使用keygen用CID编号获取Lic,效果如下:
新建项目工程
1、点击Project中的New uVision Project,选择目录起名字。
2、选择芯片类型。
3、完成文件创建,管理文件图图标就是下图所指地方。
文件设置目录有user放启动文件,主函数,中断文件。obj过程文件,system系统文件,hardware硬件。
双击user找到startup_stm32f10x_hd.s文件,而文件在stm32的官方开发包中需要下载。位置为:下载文件\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\iar中。
在user中新建main.c文件。
随便找一个代码:
参考代码:STM32底座实验指导书第三章3.2
#include"stm32f1xx_hal.h"
#include"stm32f1xx.h"
#define LED_GPIO_PORT GPIOA
#define LED1 GPIO_PIN_5 //LED1 #define LED2 GPIO_PIN_12 //LED2
#define LED1_ON() HAL_GPIO_WritePin(LED_GPIO_PORT,LED1,GPIO_PIN_RESET) // ? ? LED1 #define LED2_ON() HAL_GPIO_WritePin(LED_GPIO_PORT,LED2,GPIO_PIN_RESET) // ? ? LED2
#define LED1_OFF() HAL_GPIO_WritePin(LED_GPIO_PORT,LED1,GPIO_PIN_SET) // ? ? LED1 #define LED2_OFF() HAL_GPIO_WritePin(LED_GPIO_PORT,LED2,GPIO_PIN_SET) // ? ? LED2
extern void LED_Init(void);//LED ???
int main(void)
{
HAL_Init(); //??? HAL ? LED_Init(); //??? LED
while(1)
{
LED1_ON(); //??
LED1 delay_ms(500); //?? 500ms
LED2_ON(); //??
LED2 delay_ms(500); //?? 500ms
LED1_OFF(); //??
LED1 delay_ms(500); //?? 500ms
LED2_OFF(); //??
LED2 delay_ms(500); //?? 500ms
}
}
如下图所示:
4、选择project中的options for Target 点击。选择output,在Create HEX File前面画勾。HEX文件在后面的电路仿真有用。
然后点击运行。成功的完成第一个文件编译!