如何控制三个LED灯
寄存器开发方式 要控制PC8,7,6需要通过GPIOC,GPIOC由APB2时钟控制,所以想要使用GPIOC则需要先打开时钟APB2 1、打开时钟APB2 RCC->APB2ENR |=(0X1<<4);//通过寄存器将端口开启 IOPCEN:IO端口C时钟使能 由软件置’1’或清’0’? 0:IO端口C时钟关闭; 1:IO端口C时钟开启。
2、初始化三个灯 //红灯 //红灯位于高位寄存器的第一位,也就是GPIOC的第八位 GPIOC->CRH &=~(0xf);//将第八位寄存器全部清零 GPIOC->CRH |=(0X1<<1);//将2,3位置零,0,1位分别置0和置1,将模式配置为通用推挽输出,输出模式,最大速度为2MHZ GPIOC->ODR |=(0X1<<8);//将pin_8配置为1,此时为高电平,灯无法亮,需要亮时将其置1即可
//绿灯 //绿灯位于地位位寄存器的第七位,也就是GPIOC的第七位 GPIOC->CRL &=~(0xf<<28);//将第八位寄存器全部清零 GPIOC->CRL |=(0X1<<29);//将31,30位置零,28,29位分别置0和置1,将模式配置为通用推挽输出,输出模式,最大速度为2MHZ GPIOC->ODR |=(0X1<<7);//将pin_7配置为1,此时为高电平,灯无法亮,需要亮时将其置1即可
//蓝灯 //蓝灯位于高位寄存器的第六位,也就是GPIOC的第六位 GPIOC->CRL &=~(0xf<<24);//将第八位寄存器全部清零 GPIOC->CRL |=(0X1<<25);//将26,27位置零,24,25位分别置0和置1,将模式配置为通用推挽输出,输出模式,最大速度为2MHZ GPIOC->ODR |=(0X1<<6);//将pin_6配置为1,此时为高电平,灯无法亮,需要亮时将其置1即可
3、开灯 //开灯操作只需要控制GPIOC的引脚即可 //将ODR的8、7、6全部置0输出低电平灯就亮了 GPIOC->ODR |=(0X1<<8); GPIOC->ODR |=(0X1<<7); GPIOC->ODR |=(0X1<<6);
标准外设库开发方式
1、要控制PC8,7,6需要通过GPIOC,GPIOC由APB2时钟控制,所以想要使用GPIOC则需要先打开时钟APB2 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
2、将GPIOC的的三个引脚pin_8,7,6配置推挽输出,输出模式,最大速度为2MHZ GPIO_InitTypeDef ?GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_8 |GPIO_Pin_7|GPIO_Pin_6; GPIO_InitStruct.GPIO_Speed=GPIO_Speed_2MHz; GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init( GPIOC, &GPIO_InitStruct);
//关灯 GPIO_SetBits(GPIOC, GPIO_Pin_8 |GPIO_Pin_7 |GPIO_Pin_6);
3、开灯 可以选择一次全开也可以选择自己想要开启的颜色,改变引脚即可 GPIO_ResetBits(GPIOC, GPIO_Pin_8 |GPIO_Pin_7 |GPIO_Pin_6); ?
|