问题如题。在
STM32CubeMX中创建了一个工程,选设了GPIO——
开发板上的3个LED分别连接在PC7、PB7、PB14上因此选设这3个口,并分别命名为LED1,LED2,LED3;在Cube中时钟的设置只有HSI RC的显示为正常 {MOD},LSE、HSE都显示为灰 {MOD}的不可选状态,因此选择前者。一切设置好生成工程后在IAR下编译下载都正常,但LED没有闪烁,程序运行后好像时钟不计数一样——永远在初始态,因为采用的是HSI RC内部振荡器,无法用示波器查看,请问是什么原因?在while(1)中:
HAL_GPIO_WritePin(GPIOC,LED1_Pin,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB,LED2_Pin,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB,LED3_Pin,GPIO_PIN_SET);
HAL_Delay(5000);
HAL_GPIO_WritePin(GPIOC,LED1_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB,LED2_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB,LED3_Pin,GPIO_PIN_RESET);
HAL_Delay(5000);
结果是LED 亮以后永远不灭了——没有闪烁!
先谢谢了
在CUBE中设置了GPIO和时钟树直接可以看到打开了 GPIO时钟。为了简化问题,已用ARMmbed工程绕开后续问题,谢谢。
查一下代码中是否有
__HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
这样的打开时钟的语句,这是打开GPIO时钟的函数
也不排除Cube生产的代码有Bug导致运行不正常的问题,我就曾发现过几个,还有就是看看《勘误表》是不是有什麽特别的说明
谢谢
一周热门 更多>