使用STM32的小伙伴知道,操作STM32可以用官方固件庫直接操作芯片,也可以直接操作寄存器。
無論使用哪種方式,最終都是在操作寄存器。
今天,小編給大家介紹使用ST官方的固件庫建立的工程。
1,新建項目,在新建工程的目錄下新建幾個文件夾:
A,CORE (用來存放啟動文件)
B,STM32F10x_FWLib (用來存放ST官方的庫函數(shù)文件)
C,USER (用來存放我們的mian.c,以及system_stm32f10x.c等)
2,打開ST官方的固件庫,在對應(yīng)的文件夾添加一下文件:
CORE:添加 STM32F1xx固件庫\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport 下的core_cm3.c,core_cm3.h
添加 STM32F1xx固件庫\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm 下的所有文件
STM32F10x_FWLib: 復(fù)制 STM32F1xx固件庫\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver 下的inc,src文件夾
USER:添加 STM32F1xx固件庫\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x 目錄下的stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h
添加 STM32F1xx固件庫\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template 目錄下的main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h
3,在工程目錄右鍵,選擇Manage Components
4,建立三個Groups:USER,CORE,F(xiàn)WLIB.點擊OK.
5, 在新建立的三個Groups中分別添加:
USER:main.c,stm32f10x_it.c,system_stm32f10x.c.
CORE:core_cm3.c,startup_stm32f10x_md.s,
FWLIB:STM32F10x_FWLib/src 下面的所有文件
6,此時點擊編譯,會出現(xiàn)很多錯誤。我們點擊魔術(shù)棒,點擊c/c++選項。然后點擊Include Paths右邊的按鈕
彈出一個添加path的對話框,然后我們將圖上面的3個目錄添加進去。
PS:keil只會在一級目錄查找,所以如果你的目錄下面還有子目錄,記得path一定要定位到最后一
級子目錄。然后點擊OK.
7,此時點擊編譯,仍會出現(xiàn)很多錯誤,我們點擊魔術(shù)棒,在c/c++下 define 處添加STM32F10X_MD,USE_STDPERIPH_DRIVER
PS:STM32F10X_MD
這個宏定義是根據(jù)使用的芯片的容量來填寫的。
大容量:STM32F10X_HD
中容量:STM32F10X_MD
小容量:STM32F10X_LD
8,我們打開main.c文件,用以下代碼覆蓋文件:
#include “stm32f10x.h”
GPIO_InitTypeDef GPIO_InitStructure;
int main(void)
{
SystemInit();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_2;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOD, &GPIO_InitStructure);
while (1)
{
GPIOD-》BSRR = 0x00000005;
GPIOD-》BRR = 0x00000005;
}
}
#ifdef USE_FULL_ASSERT
void assert_failed(uint8_t* file, uint32_t line)
{
while (1)
{
}
}
#endif
9,點擊編譯,大功告成
評論
查看更多