STM32控制RGB灯WS2812求助

STM32控制RGB灯WS2812求助,第1张

首先楼主需要做几个事情:

1、确定板子上LED灯的引脚位置是属于哪个口PORTA~PORTE

2、例程内的端口是否与硬件竖启上的端口一致。

3、LED的驱动电平是高电平还是低电平。

4、一个GPIO正常工作至少需要以下几点:

a、系统时钟已经配置并正常运行。

b、对应的GPIO时钟位已经行纤桥打开(为了降低功耗,默认GPIO的时钟是不会打开的)。

c、对应的GPIO引脚已经正确配置(如果没有外上拉,应当配置为推挽输出)。

d、对应的GPIO引脚输出寄存器已经设置为对应的电平。

5、程序正常下载的板子上。

6、正常下载还不能使用,检查板子是否正常(电源电压档猛是否达到要求?晶振是否起振?复位电平是否正确?)

int main(void)

{

SystemInit()

/* 开启GPIO时钟 */

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE)

GPIO_InitTypeDef GPIO_InitStructure

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP

GPIO_Init(GPIOC, &GPIO_InitStructure)

GPIO_ResetBits(GPIOC,GPIO_Pin_13)

while(1)

}

有问题的那个程序

u8 ReadValue=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10)

只在上面那条指令采集了一次按键数据。

等到执行到 while(!ReadValue)//等待按键被放开哪罩 这条指令时

数据仍然是上次采集到的那个值代表按键按下,(!ReadValue)这个值永远成立,所以无法代表按键断开。所以程序一直卡死在这条指令上。如果要通过就必须在判据里重新读取按键状态,像正确的程序那样用这样的指令

while(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10))//等待按键被放开

另外因为你只读取了一次按键状态,所以下面那么多一堆软返缓物件消除抖动的程序白写了。

综漏液上,正确的程序在每个判断的时刻都要重新读取下按键状态。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8275098.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存