硬件介绍
芯片为STM32F103ZET6

STM32F103 资源简介

STM32 的优异性
1,超低的价格。8 位机的价格,32 位机的性能,是 STM32 最大的优势。
2,超多的外设。STM32 拥有包括:FMC、TIMER、SPI、IIC、USB、CAN、IIS、SDIO、 ADC、DAC、RTC、DMA 等众多外设及功能,具有极高的集成度。
3,丰富的型号。STM32 仅 M3 内核就拥有 F100、F101、F102、F103、F105、F107、F207、 F217 等 8 个系列上百种型号,具有 QFN、LQFP、BGA 等封装可供选择。同时 STM32 还推出 了 STM32L 和 STM32W 等超低功耗和无线应用型的 M3 芯片,另外,ST 还推出了 STM32F4/F7/H7 等更高性能的芯片。
4,优异的实时性能。150 个中断,16 级可编程优先级,并且所有引脚都可以作中断输入。
5,杰出的功耗控制。STM32 各个外设都有自己的独立时钟开关,可以通过关闭相应外设 的时钟来降低功耗。 6,极低的开发成本。通过串口即可下载程序,而且相应的仿真器也很便宜,支持 JTAG&SWD 调试接口,最少仅 2 个 IO 口即可实现仿真调试,极大的降低了开发成本。
STM32 命名规则

工程创建
一、文件导入工作
1.新建项目为project,在project中添加如下文件夹

2.在Drivers里继续创建,如下文件夹

3.在CMSIS中导入.c/.h/.s文件

4.在STM32F1xx_HAL_Driver导入

5.SYSTEM导入

其余文件夹操作不进行具体展示,获得上述完整版文件导入工作,可点击跳转获取资源。
二、具体创建
1.打开keil 5 创建工程文件到Projects中

2.找到所需芯片(进入后选择取消,创建好Target1)

3.添加组和文件

4.全部添加完成加入main.c文件后如下所示

5.定义define和添加相对路径
STM32F103xE,USE_HAL_DRIVER
..\Drivers\CMSIS\Include
..\Drivers\CMSIS
..\Drivers\STM32F1xx_HAL_Driver\Inc
..\User\Inc
..\Drivers\SYSTEM

6.修改晶振为8MHz

7.main.c代码编写
该代码为流水灯实现效果。
#include "sys.h"
#include "usart.h"
#include "delay.h"
void led_init(void); /* LED 初始化函数声明 */
int main(void)
{HAL_Init(); /* 初始化 HAL 库 */sys_stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */delay_init(72); /* 延时初始化 */led_init(); /* LED 初始化 */while(1){HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET); /* PB5 置 1 */HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_RESET); /* PE5 置 0 */delay_ms(500);HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET); /* PB5 置 0 */HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_SET); /* PE5 置 1 */delay_ms(500);}
}
/**
* @brief 初始化 LED 相关 IO 口, 并使能时钟
* @param 无
* @retval 无
*/
void led_init(void)
{
GPIO_InitTypeDef gpio_initstruct;
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_GPIOE_CLK_ENABLE();gpio_initstruct.Pin = GPIO_PIN_5; /* LED0 引脚 */gpio_initstruct.Mode = GPIO_MODE_OUTPUT_PP; /* 推挽输出 */gpio_initstruct.Pull = GPIO_PULLUP; /* 上拉 */gpio_initstruct.Speed = GPIO_SPEED_FREQ_HIGH; /* 高速 */HAL_GPIO_Init(GPIOB, &gpio_initstruct); /* 初始化 LED0 引脚 */gpio_initstruct.Pin = GPIO_PIN_5; /* LED1 引脚 */HAL_GPIO_Init(GPIOE, &gpio_initstruct); /* 初始化 LED1 引脚 */
}
8.编译
至此,项目创建工作全部完成。
感谢各位读者的阅读!希望大家给出一键三连,多多支持原创。有错误和不解的地方,欢迎各位读者在评论区讨论,我也会不断学习不断改进,做出更加优质的作品!!!