LED的初始化
void led_init(void)
{
GPIO_InitTypeDef gpio_struct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
gpio_struct.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
gpio_struct.GPIO_Speed = GPIO_Speed_50MHz;
gpio_struct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC,&gpio_struct);
gpio_struct.GPIO_Pin = GPIO_Pin_2;
GPIO_Init(GPIOD,&gpio_struct);
GPIOC->ODR |= (0xff << 8);
GPIOD->ODR |= (0x1 << 2); //打开LE锁存器
GPIOD->ODR &= ~(0x1 << 2); //关闭LE锁存器
}
锁存器的作用
锁存器(Latch)是一种对
脉冲电平敏感的
存储单元
电路,它们可以在特定输入脉冲电平作用下改变状态。锁存,就是把
信号暂存以维持某种电平状态。锁存器的最主要作用是
缓存,其次完成高速的控制器与慢速的外设的不同步问题,再其次是解决驱动的问题,最后是解决一个 I/O 口既能输出也能输入的问题。锁存器是利用电平控制数据的输入,它包括不带使能控制的锁存器和带使能控制的锁存器。
LED的设置函数
uint16_t LED = 0xffff;
void led_set(void)
{
GPIOC->ODR = (LED << 8);
GPIOD->ODR |= (0x1 << 2);
GPIOD->ODR &= ~(0x1 << 2);
}
LED的使用
int main(void)
{
//LED的初始化
led_init();
//点亮以一个LED灯
LED &= 0xfe;//1111 1110
led_set();
while(1){
}
}