本帖最后由 江畔美少年 于 2019-4-8 14:15 编辑

开发板拿到已经有一段时间了,不过这段时间也没有太多空闲时间学习,在半个月前点的灯,直到今天才发出来。
先上几段程序
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,原理图上两只引脚标识逆反。 QQ图片20190408141249.png