新建工程

新建裸项目

打开Keil,Project -> New Project新建项目

在这里插入图片描述

选择项目存放的路径,项目内容由文件夹的名称说明,文件名填写Project

在这里插入图片描述

在弹出的Select Device选项卡里选择STMicroelectronics -> STM32F1 Series -> STM32F103 -> STM32F103C8点击确定,接下来弹出的Manage Run-Time Environment选项卡可以直接关闭

在这里插入图片描述

添加必要的工程文件

找到标准库STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\下的启动文件,在项目文件夹新建一个Start\文件夹,将启动文件放入其中

在这里插入图片描述

返回上层目录到STM32F10x\,将该目录下的.c和.h文件放入Start\

在这里插入图片描述

将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\下的两个文件放入Start\

在这里插入图片描述

修改Target 1下组名为Start,双击或右键 -> Add Existing Files to Group “Start”,进入Start\文件夹后,设置“文件类型”为All files,选中startup_stm32f10x_md.s以及其他所有的.c和.h文件,点击Add

在这里插入图片描述

点击魔术棒按钮 -> C/C++ -> Include Paths -> 新建按钮,然后选择Start\并确定

在这里插入图片描述

测试工程是否创建成功

在项目文件夹中新建一个User文件夹,然后在Target 1下新建一个Group命名为User,用于存放用户代码

在这里插入图片描述

魔术棒 -> 包含路径添加User\

在这里插入图片描述

右键User -> Add New Item to Group ‘User’ -> C File(.c) -> Name为main -> location为User\路径

在这里插入图片描述

打开main.c,右键插入头文件

在这里插入图片描述

编写一个main函数,点击build按钮编译

在这里插入图片描述

没有错误和警告,说明工程创建成功

一些设置

魔术棒 -> Debug选择ST-Link Debugger,

在这里插入图片描述

点击右侧Settings按钮 ->Flash Download -> 勾选 Reset and Run

在这里插入图片描述

魔术棒 -> Output -> 勾选生成hex文件,方便在Proteus仿真

在这里插入图片描述

添加库函数

之前的项目只能实现基于寄存器的开发,还没有添加库函数

在项目文件夹下新建Library\文件夹,将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\下inc\和src\下的所有.c和.h文件放入Library

在这里插入图片描述

在Keil中新建Library组并添加元素,然后添加路径,与Start组类似

将STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\下的三个.c或.h文件放到User\下,并更新Group User元素

在这里插入图片描述

打开stm32f10x.h,找到末尾的判断语句,复制字符串

在这里插入图片描述

魔术棒 -> C/C++ 定义这个字符串

在这里插入图片描述

至此,基于库函数开发的项目框架就已经搭建完成了,接下来实现点灯操作并在Proteus中仿真

点亮LED

main.c中写入以下代码并编译(Build)

#include "stm32f10x.h"                  // Device header

int main(void)
{
	// 开启时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
	
	// 配置端口模式
	GPIO_InitTypeDef GPIO_InitStruct;	// 定义GPIO初始化结构体
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;	// 推挽输出
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOB, &GPIO_InitStruct);
	
	// 设置引脚
	GPIO_SetBits(GPIOB, GPIO_Pin_13);	// 设置引脚为高电平
	// GPIO_ResetBits(GPIOB, GPIO_Pin_13);		// 设置引脚为低电平
	
	while(1)
	{
		
	}
}

打开Proteus,新建工程,然后一路Next即可

在这里插入图片描述

在这里插入图片描述

双击DEVICES空白处添加设备,搜索关键词STM32,选择STM32F103C8,确定

在这里插入图片描述

搜索LED,选择LED-BLUE,添加一个蓝色LED灯,确定

在这里插入图片描述
绘制电路图,注意LED的连接方式,代码中目前设置PB13为高电平,如果希望运行时LED亮,就需要设置LED的点亮方式为高电平点亮,点亮方式由LED连接方式决定:

  • 高电平点亮:引脚 -> LED -> GND
  • 低电平点亮:VCC -> LED -> 引脚

在这里插入图片描述

双击STM32F103C8编辑元件属性,Program File选择STM32 Project项目中的STM32Project\2-1newProject\Objects\Project.hex,OSC Frequency设置为72MHz

在这里插入图片描述

点击左下角按钮开始仿真,可以观察到蓝色LED常亮

32 Project项目中的STM32Project\2-1newProject\Objects\Project.hex,OSC Frequency设置为72MHz

点击左下角按钮开始仿真,可以观察到蓝色LED常亮

在这里插入图片描述

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐