本人新手,板子是f0discovery,带芯片F051,目前挑战闪烁灯,但是不知道何故,灯一直亮,完全不闪,源程序如下: #include "stm32f0xx.h" #include "stm32f0xx_rcc.h" #include "stm32f0xx_flash.h" #include "stm32f0xx_cec.h" #include "stm32f0xx_gpio.h" #include <stdio.h> void RCC_Config(void) { RCC_DeInit(); RCC_HSICmd(ENABLE); while (RCC_GetFlagStatus(RCC_FLAG_HSIRDY) != SET) /* check out, if HSI ready */ { } FLASH_PrefetchBufferCmd(ENABLE); /* Enable Flash */ FLASH_SetLatency(FLASH_Latency_1); /* Flash wait two State */ RCC_HCLKConfig(RCC_SYSCLK_Div1); RCC_PCLKConfig(RCC_HCLK_Div2); RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_16); /* PLLCLK = HSI/2 * 16 = 64 MHz */ RCC_PLLCmd(ENABLE); while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) != SET) /* check out, if PLL ready */ { } RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); /* SYSCLK = PLLCLK = 64 MHz -> APB1 = 32 MHz, APB2 = 64 MHz */ while (RCC_GetSYSCLKSource() != 0x08) /* check out, if SYSCLK uses PLLCLK */ { } RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE); } void GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitS; GPIO_InitS.GPIO_Pin = GPIO_Pin_9; GPIO_InitS.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitS.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitS.GPIO_OType = GPIO_OType_PP; GPIO_Init(GPIOC,&GPIO_InitS); } int main(void) { int i = 0; while(1) { RCC_Config(); GPIO_Config(); while (1) { GPIO_SetBits(GPIOC, GPIO_Pin_9); GPIO_ResetBits(GPIOC, GPIO_Pin_9); } } } 开头我以为频率太快可能不行,所以把开关灯的setbits和resetbits加上循环,变成: for(i=1;i<30;i++) {GPIO_SetBits(GPIOC, GPIO_Pin_9);} for(i=1;i<30;i++) {GPIO_ResetBits(GPIOC, GPIO_Pin_9);} 让其有延时,灯还是不闪,各位知道是什么原因吗?谢谢 |
{
GPIO_SetBits(GPIOC, GPIO_Pin_9);
GPIO_ResetBits(GPIOC, GPIO_Pin_9);
}
这两条一开一关指令跑起来,1mS都不用,LED灯在狂:开关开关开关,电灯泡20MS闪的频率都看不到闪,这个怎么分的清LED在闪呢?
如果是开,停一下,再关,再停一下,再开,再停一下,是不是就很容易看清LED闪了。
因为led灯亮起来,熄灭后会有 余辉, 数码管扫描就是这个原理。。。
个人觉得也可能是delay的问题。。。这儿30000真心不大,建议构造一个delay函数,里面使用双层嵌套循环来延时,记得打开后加延时,关闭后也加延时
是的所以在debuger里一步步走的话就能看见灯熄灭,关键还是中间停的时间太短,现在调好了!
我延到30000了,貌似没有效果....
这个要怎么检查?新手不懂,求教,谢谢!
这个要怎么检查?新手不懂,求教,谢谢!
已经加到30000了还是不行啊,话说如果是频率太高的问题的话,为什么会是一直亮灯,而不是一直不亮呢?谢谢
如果是这样的话,为什么会是一直亮灯,而不是一直不亮呢?谢谢!
本人新手,刚看到gpio,timer是什么?能给我介绍一下吗?
用这个里面的,在他们上面改出错率低些