1.啟動KEIL,創(chuàng)建工程以后,先用創(chuàng)建文件,然;到你的工程文件夾下面,命名為main.c(其他也;然后輸入以下幾行代碼:;#include"stm32f10x.;voidmain(void);}然后點擊Build,會有以下報錯信息:;C:KeilARMIncSTSTM32;這是說stm32f10x.h中要求工程在預(yù)編譯時;解決辦法:請點
1. 啟動KEIL,創(chuàng)建工程以后,先用創(chuàng)建文件,然后什么也不干,直接點擊保存,保存
到你的工程文件夾下面,命名為main.c(其他也可以,命名為main.c是為了方便你同其他的C文件快速區(qū)分開來)。
然后輸入以下幾行代碼:
#include "stm32f10x.h"
void main(void)
{
} 然后點擊Build,會有以下報錯信息:
C:KeilARMIncSTSTM32F10xstm32f10x.h(96): error: #35: #errordirective: "Please select first the target STM32F10x device used inyour application (in stm32f10x.h file)"
這是說stm32f10x.h中要求工程在預(yù)編譯時通過一個字符串,來識別所用的芯片F(xiàn)LASH大小,然后確定頭文件中哪些語句有效。ST把STM32按FLASH大小尺寸來歸類的,具體在STM32參考手冊里面有。
解決辦法:請點擊
中的
打開的界面中選到選項,然后Define里面輸入STM32F10X_MD(因為這個實驗板上用的STM32F103C8T6對應(yīng)這個“中等容量的FLASH”,換做其他芯片不一定是這個字符串),如圖:
然后點擊OK。 再,然后會出第二個錯誤:
C:KeilARMIncSTSTM32F10xstm32f10x.h(8297): error: #5:cannot open source input file "stm32f10x_conf.h": No such file ordirectory
這說明文件包含的路徑?jīng)]有設(shè)置好。
解決辦法: 按上面所述選到選項。然后在
下選擇,再點擊,然后打開目錄找到固件庫里面的
這個文件(最好能把
這個文件夾復(fù)制出來保存到一個純英文路徑的目錄下),然后選擇中里面的inc文件夾,然后再如法炮制選中里面的src文件夾。然后點擊確定。效果如圖:
點擊OK,然后出現(xiàn)下圖,再點OK保存
再點擊OK。然后再Build,你會發(fā)現(xiàn)第二個錯誤已經(jīng)解決了,但是出現(xiàn)了一個新錯誤,這個錯誤我們先不管。
2. 我們先添加下面這么一段代碼:
void RCC_Config(void)
{
ErrorStatus HSEStartUpStatus;
RCC_DeInit();
RCC_HSEConfig(RCC_HSE_ON);
HSEStartUpStatus = RCC_WaitForHSEStartUp();
if(HSEStartUpStatus == SUCCESS)
{
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
FLASH_SetLatency(FLASH_Latency_2); /
RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLK2Config(RCC_HCLK_Div1);
RCC_PCLK1Config(RCC_HCLK_Div2);
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); /
RCC_PLLCmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
{
}
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
while(RCC_GetSYSCLKSource() != 0x08)
{
}
}
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA
|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO, ENABLE);
}
先不解釋這上面代碼的意義。在main函數(shù)中調(diào)用:
void main(void)
{
RCC_Config();
while(1)
{
}
}
然后點擊Build,會出現(xiàn)15處錯誤。
之所以會出現(xiàn)如此多錯誤,是因為上面代碼中用到的一些函數(shù)沒有被聲明或者定義過。這些函數(shù)來自于STM32的標準外設(shè)庫函數(shù)(通常稱之為固件庫),在stm32f10x_conf.h這個頭文件中包含了所有外設(shè)的頭文件.h,每個外設(shè)頭文件都有一個對應(yīng)的.c源文件與之對應(yīng)。解決辦法:
右鍵點擊
然后Add Group,重命名文件夾為比如lib_src。再右擊該文件夾,出現(xiàn):
選擇
件夾下的src文件夾,添加以下幾個文件:
,然后打開STM32F10x_StdPeriph_Driver文
然后重新Build以后,還會出現(xiàn)一個錯誤:
.LED.axf: Error: L6218E: Undefined symbol SystemInit (referredfrom startup_stm32f10x_md.o).
出現(xiàn)這個錯誤是因為SystemInit這個符號沒有定義,這個其實是一個函數(shù),定義在system_stm32f10x.c中,但是這個文件卻在Keil的安裝路徑下。
|