硬件介紹
芯片為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.編譯
?
至此,項目創建工作全部完成。
?
?感謝各位讀者的閱讀!希望大家給出一鍵三連,多多支持原創。有錯誤和不解的地方,歡迎各位讀者在評論區討論,我也會不斷學習不斷改進,做出更加優質的作品!!!