vscode+keil嵌入式软件开发全流程

vscode+keil嵌入式软件开发全流程

1 安装MinGW-w64

(1) MinGW-w64 是一个用于Windows操作系统的开发工具集,其包含了C语言编译器 GCC(GNU Compiler Collection),官网地址:https://www.mingw-w64.org

(2)下载安装包,并解压到相应的安装目录,后添加到环境变量中。

2 安装VSCode

VS Code 官网 https://code.visualstudio.com 下载最新安装包,后安装,注选择附加任务时,全勾选。

安装扩展 Chinese(Simplified)(简体中文)Language Pack for Visual Studio Code,C/C++相关扩展。

3 用VsCode编写第一个C语言程序

在本地磁盘新建C程序保存目录,打开文件夹。

新建文件夹,编写love.c程序

c 复制代码
#include<stdio.h>
int main(){
	int times;
	for(times=10;times>=1;times--){
		printf("love you 10 thousands year\n");
	}
	return 0; 
}

点击运行程序,即可在终端看到结果

4 Keil C51软件安装

4.1 下载安装

官网的下载地址为:https://www.keil.com

点击C51V961.EXE进行安装

4.2 激活keil

以管理员身份打开keil,后在文件中找到License ManageMent

复制CID

运行注册机

注册机粘贴keil中复制的CID,点击生成,复制生成后的许可密钥。

在License Management中粘贴密钥,点击Add LIC按钮,查看license生成结果,关闭

5 STC-ISP烧录工具安装

官方下载地址为:http://www.stcmcudata.com/STCISP/stc-isp-15xx-v6.92A.zip

点击stcai-isp-v6.94H.exe进行安装

通过stc-isp向Keil添加STC89C52系列芯片信息

6 用keil C51编写第一个单片机程序

6.1 创建项目

新建工程

项目名test

选择所需芯片

6.2 编写程序

新建文件

文件名为main.c

编写点亮一个灯程序

c 复制代码
#include "reg52.h"
sbit led1=P3^7;
void main(){
	//灯亮,给一个低电平
	led1=0;
}

上述中文无法正常显示,修改字符集edit ->configuration

选择Chinese GB2312

6.3 编译程序

勾选生成hex文件

点击Build按钮进行编译(Translate 编译当前文件,仅语法检查,不可生成可执行文件,Build 编译当前文件,可生成可执行文件)

6.4 烧录程序

(1))开发板通过数据线连接PC

(2)CH340串口转USB驱动安装(若PC中已安装,则无需再次安装)

(2)启动stc-isp->选择芯片型号和串口,波特率->打开程序文件->下载

7 用VSCode编写单片机程序

7.1 EIDE插件安装

7.2 EIDE插件使用

7.2.1 创建项目

选择空项目

选择8位MCU

选择8051项目

编辑项目名

选择项目保存路径

7.2.2 配置项目

Keil_C51编译器选择,选择Keil C51编译器

设置keil C51编译器路径

设置Include Path(STC芯片的头文件添加到项目的Include Path,方便项目引用)

选择STC头文件所在目录

7.2.3 编写代码
c 复制代码
#include "reg52.h"
sbit led1=P3^7;
void main(){
	//灯亮,给一个低电平
	led1=0;
}

编译代码

生成hex文件(项目根目录下的build\Relase 目录中生成)

使用stc-isp烧录程序

8 Keil MDK的下载和安装

8.1下载安装

官方下载地址:https://www.keil.com/download/product/

点击MDK538a.EXE进行安装

8.2 激活keil

以管理员身份打开keil,后在文件中找到**License ManageMent

复制CID

运行注册机

注册机粘贴keil中复制的CID,点击生成,复制生成后的许可密钥。

8.3 离线安装芯片支持包

关闭芯片支持包的在线安装,从官网下载离线芯片支持包

芯片支持包网址:https://www.keil.arm.com/devices/

下载完成双击即可自动安装

8.4 Keil烧录程序闪退

替换掉D:\developer_tools\Keil_v5_MDK\ARM\STLink目录下STLinkUSBDriver.dll文件

9 用keil MDK编写第一个单片机程序

9.1 创建项目工程

9.1.1 创建需要的目录

创建项目工程存放目录STM32 ,第一个工程目录led_register

9.1.2 准备启动文件
9.1.2.1 下载芯片对应标准外设库包

标准外设库下载地址:https://www.st.com/zh/embedded-software/stm32-standard-peripheral-libraries/products.html

搜索产品型号

下载最新版本

获取到标准外设库包

9.1.2.2 从标准库中拷贝启动文件和其他核心文件

创建Start目录存放启动文件和其他核心文件

启动文件选择标准:

复制启动文件startup_stm32f10x_md.s

复制文件stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h

复制文件core_cm3.c,core_cm3.h

复制上述文件到Start目录下后

9.1.3 创建工程

打开keil MDK新建工程

选择所需芯片

工程创建助手关闭

创建后的新项目如下

9.1.4 工程配置

删除Source Group 1,再添加Start (启动相关文件),User (用户代码)这两个project group。

Start 中添加文件

创建main 函数,并添加到User

9.1.5 编译配置
9.1.5.1 编译器改版本

最新的Keil ARM用的是Compiler version 6,与核心文件中的core_cm3.c不兼容,需换成Compiler version 5

下载地址:https://developer.arm.com/downloads/view/ACOMP5

解压后的文件名改为ARMCC后复制到keil MDK安装目录下

添加新的ARM Compiler

选择ARMCC目录

设置为默认ARM Compiler Version

9.1.5.2 其他配置

勾选生成HEX文件

添加包含的文件路径

9.2 编写点灯代码(操作寄存器方式)

c 复制代码
#include "stm32f10x.h"
int main(void)
{
		/* 开启GPIOA的时钟 */
		RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;
		/* 给PA0设置为通用推挽输出 */
    GPIOA->CRL &= ~GPIO_CRL_CNF0_1;
    GPIOA->CRL &= ~GPIO_CRL_CNF0_0;
    GPIOA->CRL |= GPIO_CRL_MODE0_1;
    GPIOA->CRL |= GPIO_CRL_MODE0_0;
		/* 给输出寄存器赋值 */
    GPIOA->ODR &= ~GPIO_ODR_ODR0;
    while (1)
    {
    }
}

9.3 编译代码

9.3 下载程序

9.3.1 下载程序前配置

安装ST-LINK驱动

keil目录下有ST-LINK的USB驱动,双击运行即可

升级STLink固件

连接STLink烧录器,keil目录下有ST-Link升级程序,双击运行即可

Keil中配置ST-LINK

勾选Reset and Run(程序下载后自动执行)

取消勾选Pack的Enable项(勾选了的话,不会自动执行,需手动复位才执行)

9.3.2 下载

10 Keil MDK + VSCode开发

10.1 安装Keil Assisant插件

已安装Vscode,并已安装C/C++插件,下面安装Keil Assisant 插件

10.2 Keil 助手插件配置


10.3 编辑代码

keil中完成工程创建,环境配置,VSCode打开keil工程

方法一 :(VSCode中keil工程)

找到keil项目的uvprojx文件

方法2 :(选择uvprojx文件通过Code打开)

10.4 编译下载

11 HAL库开发

11.1 java环境安装

STM32CubeMX 要求java8的运行环境,下载地址:https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html

双击安装即可

11.2 安装STM32CubeMX

下载地址:https://www.st.com/zh/development-tools/stm32cubemx.html#get-software

双击安装即可

11.3 下载芯片支持包

11.3.1 方法1:在线下载芯片支持包

打开STM32CubeMX

11.3.2 方法2:离线安装芯片支持包

下载地址:https://www.st.com/zh/development-tools/stm32cubemx.html#tools-software



注:离线安装方式只能安装基础包(en.stm32cubef1.zip),无法安装升级包(en.stm32cubef1-v1-8-5.zip)。

把en.stm32cubef1-v1-8-5.zip拷贝到stm32cube的仓库,xxx\STM32Cube\Repository下解压覆盖原先文件即可

11.4 创建HAL库工程

从MCU开启工程

选择芯片STM32F103C8T6

参数设置,引脚设置

Debug参数选择(选择串口)

RCC时钟选择

GPIO设置

工程配置


生成代码

生成的工程目录

11.5 解读自动生成的代码

main 函数代码如下:

gpio 初始化代码如下:

11.6 HAL库实现LED每隔1s钟闪烁一次

有了gpio初始化程序,还需构建LED驱动,项目根目录下新建Hardware/led目录,Hardware/led目录下创建2个文件led.h和led.c,并在keil中配置。

LED驱动路径添加

添加LED驱动文件

编写代码led.c,led.h,main.c

led.c

c 复制代码
#include "led.h"
//点亮LED1函数
void led_on(void)
{
    //void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET); // 拉低LED1引脚,点亮LED1
}
//熄灭LED1函数
void led_off(void)
{
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET); // 拉高LED1引脚,熄灭LED1
}

//翻转LED1状态函数
void led_toggle(void)
{
    //void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
    HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_0);
}

led.h

c 复制代码
#ifndef __LED_H__
#define __LED_H__
#include "gpio.h"
void led_init(void);
void led_on(void);
void led_off(void);
void led_toggle(void);
#endif

main.c

c 复制代码
#include "led.h"
int main(void)
{
    HAL_Init();  /* 初始化HAL库 */
    SystemClock_Config();;   /* 设置时钟, 72Mhz */
    led_init(); /* 初始化LED灯 */
    MX_GPIO_Init();
    while(1)
    { 
       	led_on();
        delay_ms(500);
        led_off();
        delay_ms(500);
    }
}
相关推荐
小彭律师3 小时前
使用VSCode在Windows 11上编译运行项目
ide·windows·vscode
我不是帅戈9 小时前
STM32+安信可Ai-WB2-12F连接阿里云物联网平台
stm32·物联网·阿里云·云计算·安信可
教练、我想打篮球9 小时前
04 基于 STM32 的时钟展示程序
stm32·单片机·嵌入式硬件
大鱼YY9 小时前
STM32系统定时器以及微秒延时函数分析
stm32·滴答定时器
芯岭技术10 小时前
普冉MS32C001单片机,国产32位单片机,芯片特性和功能介绍
单片机·嵌入式硬件
吃货界的硬件攻城狮12 小时前
【STM32 学习笔记】ADC数模转换器
笔记·stm32·单片机·学习
明晚十点睡14 小时前
Vscode (Windows端)免密登录linux集群服务器
linux·服务器·vscode
小昭dedug15 小时前
功能安全的关键——MCU锁步核技术全解析(含真实应用方案)
单片机·嵌入式硬件
BW.SU17 小时前
单片机 + 图像处理芯片 + TFT彩屏 指示灯控件
单片机·嵌入式硬件·人机交互·控件·触摸屏设计·指示灯·液晶屏
newtonltr17 小时前
CANopen TPDO 配置详解:对象 1800h、1A00h 与实践指南
stm32·canopen