今日,我學(xué)習(xí)了如何配置GPIO端口,并讓我做一段點亮開發(fā)板D2端口小燈的程序。 具體程序如下: //#define STM32F10X_HD #include "stm32f10x.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" //io口初始化 void GPIO_INITCFG(void) { GPIO_InitTypeDef GPIO_InitVar; GPIO_InitVar.GPIO_Pin=GPIO_Pin_2; GPIO_InitVar.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitVar.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOD,&GPIO_InitVar); } int main(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); GPIO_INITCFG(); while(1)//D2light { GPIO_SetBits(GPIOD,GPIO_Pin_2);//置一亮 } return 0; } 程序的具體含義為: void GPIO_INITCFG(void) { GPIO_InitTypeDef GPIO_InitVar; GPIO_InitVar.GPIO_Pin=GPIO_Pin_2; GPIO_InitVar.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitVar.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOD,&GPIO_InitVar); } 這段程序是一個結(jié)構(gòu)體,功能是配置GPIO的D2端口,以50MHz的速度進(jìn)行推挽輸出。 - RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
這句程序控制D端口的時鐘,使其能夠由STM32芯片控制。 2、GPIO_INITCFG(); 這句程序作用是聲明結(jié)構(gòu)體,使其有意義。注:只有在主程序中聲明的函數(shù),才能正常運行。 3、 while(1)//D2light { GPIO_SetBits(GPIOD,GPIO_Pin_2);//置一亮 } 這段程序執(zhí)行點亮D2端口小燈的操作。 將程序編譯后下載,結(jié)果如下: 在編譯過程中,遇到了如下錯誤: Error: L6218E: Undefined symbol assert_param (referred from stm32f10x_gpio.o). 解決方法為:在Options->C/C++->preprocessor Symboles有Define:項中輸入USE_STDPERIPH_DRIVER,重新編譯鏈接,無警告無錯誤。如圖:
具體圖片和過程中遇到的難點可看附件!!!
完整的Word格式文檔51黑下載地址:
點亮開發(fā)板D2端口的小燈.doc
(2.83 MB, 下載次數(shù): 7)
2019-3-20 13:42 上傳
點擊文件名下載附件
有具體結(jié)果
|