拿到板子,第一件事当然是点灯
1. 硬件结构
在原理图中,找到LED部分的电路
由原理图可知,板载8个led灯,通过锁存器74HC573与单片机相连接,每次给LE一个下降沿,锁存器更新状态。使用锁存器的好处是更好的利用引脚。
对应引脚:
LED0 ~ 7 --> PC8 ~ PC15
LE --> PD2
2. 代码移植
LED的驱动无非是改变GPIO输出的状态。可以在V3.5库文件中的GPIO中修改得到。修改好对应需要的GPIO即可。GPIO复位置0,LED发光。
写的比较好的,我就直接参考过来了
#include "led.h"
void led_init()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD, ENABLE);//使能GPIOC|D的时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //PD2
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = LED_ALL;
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
void led_control(u16 led,u8 state)
{
if(state==1)
GPIO_ResetBits(GPIOC,led);
else if(state==0)
GPIO_SetBits(GPIOC,led);
/*
对单个io,不写判断,这么写也是可以的
GPIO_WriteBit(GPIOC,led,state);
*/
GPIO_SetBits(GPIOD,GPIO_Pin_2); //锁存
GPIO_ResetBits(GPIOD,GPIO_Pin_2);
}
#ifndef __LED_H
#define __LED_H
#include "stm32f10x.h"
#define LED_ALL GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15
#define LED1 GPIO_Pin_8
#define LED2 GPIO_Pin_9
#define LED3 GPIO_Pin_10
#define LED4 GPIO_Pin_11
#define LED5 GPIO_Pin_12
#define LED6 GPIO_Pin_13
#define LED7 GPIO_Pin_14
#define LED8 GPIO_Pin_15
void led_Init(void);
void led_Control(u16 led,u8 state);
#endif