今日,我学习了如何配置GPIO端口,并让我做一段点亮开发板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); } 这段程序是一个结构体,功能是配置GPIO的D2端口,以50MHz的速度进行推挽输出。 - RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
这句程序控制D端口的时钟,使其能够由STM32芯片控制。 2、GPIO_INITCFG(); 这句程序作用是声明结构体,使其有意义。注:只有在主程序中声明的函数,才能正常运行。 3、 while(1)//D2light { GPIO_SetBits(GPIOD,GPIO_Pin_2);//置一亮 } 这段程序执行点亮D2端口小灯的操作。 将程序编译后下载,结果如下: 在编译过程中,遇到了如下错误: Error: L6218E: Undefined symbol assert_param (referred from stm32f10x_gpio.o). 解决方法为:在Options->C/C++->preprocessor Symboles有Define:项中输入USE_STDPERIPH_DRIVER,重新编译链接,无警告无错误。如图:
具体图片和过程中遇到的难点可看附件!!!
完整的Word格式文档51黑下载地址:
点亮开发板D2端口的小灯.doc
(2.83 MB, 下载次数: 7)
|