我用NUCLEO小板写了个指示灯的程序,可以了。
接下来我又写了个按键的,控制灯,死活不行。
程序如下:
#include "stm32f0xx.h"
#include "stm32f0xx_conf.h"
#include "stm32f0xx_it.h "
#include "system_stm32f0xx.h"
//#include "stm32f0xx_nucleo.h"
#include <stdio.h>
#include <string.h>
#define led_gpio GPIOA //((GPIO_TypeDef *) GPIOA_BASE)
#define led GPIO_Pin_5 //led???GPIOA_5
#define led_turn GPIO_WriteBit(led_gpio,led,(BitAction)!GPIO_ReadOutputDataBit(led_gpio,led))
#define key_gpio GPIOC
#define key GPIO_Pin_13
void led_init()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE); //????
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA|RCC_AHBPeriph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin=led; //?????
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* Configure PA0 pin as input floating */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
void delay_ms(unsigned int Counter)
{
unsigned int i;
for(;Counter!=0;Counter--)
{
i=10301;
while(i--);
}
}
/********************************************************************************
????: main()
? ?: ?????
? ?: ?
? ? ?: ?
*********************************************************************************/
int main(void)
{
//SystemInit(); //????????,?????????,????????
led_init();
while(1)
{
if(GPIO_ReadOutputDataBit(key_gpio,key)==0)
{
delay_ms(10);
if(GPIO_ReadOutputDataBit(key_gpio,key)==0)
while(GPIO_ReadOutputDataBit(key_gpio,key)==0);
led_turn;
//delay_ms(150);
}
}
}
大神给看看,哪里有问题?谢谢!
|