第一步,点亮LED
这一步在上一节调试LED时已经学过,代码如下:
/*
调用库函数RCC_APB2PeriphClockCmd
传入两个参数RCC_APB2Periph_GPIOD,ENABLE
RCC_APB2Periph_GPIOD是一个宏定义,
ENABLE是一个新定义的枚举类型FunctionalState
*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
GPIO_ResetBits(GPIOE, GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);
/* Configure PD0 and PD2 in output pushpull mode */
/* Configure PD0 and PD2 in output pushpull mode */
/*赋值给结构体变量GPIO_InitStructure的成员,
注意,GPIO_InitStructure是实体,所以用点,
如果是一个结构体指针,就用->
GPIO_InitStructure->GPIO_Pin
*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOE, &GPIO_InitStructure);
GPIO_SetBits(GPIOE, GPIO_Pin_7);
GPIO_SetBits(GPIOE, GPIO_Pin_8);
GPIO_SetBits(GPIOE, GPIO_Pin_9);
GPIO_SetBits(GPIOE, GPIO_Pin_10);
GPIO_SetBits(GPIOE, GPIO_Pin_11);
GPIO_SetBits(GPIOE, GPIO_Pin_12);
GPIO_SetBits(GPIOE, GPIO_Pin_13);
GPIO_SetBits(GPIOE, GPIO_Pin_14);
几个关键点:
记得打开IO口时钟。
先设置状态,再配置IO口为输出。防止IO口配置完后LED闪一下。
(特别是在控制电机时,一定要配置为确定状态后再将GPIO外设连接到IO口)
然后调用GPIO_SetBits控制IO口。
用调试器一个一个LED数码管轮流测试,看是不是能点亮、熄灭。
为什么要一个一个调试?因为这样测试可以要测试出硬件上IO口短路的情况。
如果8个IO口一起控制亮灭,就无法知道IO口有没有短路。