开发板拿到已经有一段时间了,不过这段时间也没有太多空闲时间学习,在半个月前点的灯,直到今天才发出来。
先上几段程序
led.c:
#include "led.h"
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2; //GPIO端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化
GPIO_SetBits(GPIOA,GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2); //输出高电平
}
led.h:
#ifndef __LED_H
#define __LED_H
#include "sys.h"
#define RPWM PAout(1) // PA1
#define GPWM PAout(2) // PD2
#define BPWM PAout(0) // PD0
void LED_Init(void);//初始化
#endif
main.c:
#include "led.h"
#include "delay.h"
#include "sys.h"
int main(void)
{
delay_init(); //延时函数初始化
LED_Init(); //LEDGPIO端口初始化
while(1)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_0); //输出低电平
delay_ms(300);
GPIO_ResetBits(GPIOA,GPIO_Pin_1);
delay_ms(300);
GPIO_ResetBits(GPIOA,GPIO_Pin_2);
delay_ms(300);
GPIO_SetBits(GPIOA,GPIO_Pin_0); //输出高电平
delay_ms(300);
GPIO_SetBits(GPIOA,GPIO_Pin_1);
delay_ms(300);
GPIO_SetBits(GPIOA,GPIO_Pin_2);
delay_ms(300);
}
}
按照这个程序应该是RGB蓝红绿的顺序闪烁,实际上灯闪烁的颜色好像和自己的预期不一样,呈现绿红蓝顺序,仔细检查发现,PA0引脚是Green,PA2引脚是Blue,原理图上两只引脚标识逆反。
