你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

为什么GPIO_ResetBits 不起作用?

[复制链接]
暗爪侠 提问时间:2016-8-24 22:42 /
本人新手,板子是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);}
让其有延时,灯还是不闪,各位知道是什么原因吗?谢谢
收藏 1 评论25 发布时间:2016-8-24 22:42

举报

25个回答
sunnydevil 回答时间:2016-8-25 08:12:18
延时再长点...
chifen 回答时间:2016-8-25 09:10:19
你看一下板载有没有晶振,051最大倍频只有48MH
回答时间:2016-8-25 09:22:31
SET和RESET和SET之间加延时。太快你根本看不到变化。
风子 回答时间:2016-8-25 12:03:31
实际上就是频率太快
nashchen17 回答时间:2016-8-25 12:49:05
才加到30應該不夠,建議用timer試試看
暗爪侠 回答时间:2016-8-25 19:10:01

我延到30000了,貌似没有效果....
暗爪侠 回答时间:2016-8-25 19:10:39
chifen 发表于 2016-8-25 09:10
你看一下板载有没有晶振,051最大倍频只有48MH

这个要怎么检查?新手不懂,求教,谢谢!
暗爪侠 回答时间:2016-8-25 19:10:54
chifen 发表于 2016-8-25 09:10
你看一下板载有没有晶振,051最大倍频只有48MH

这个要怎么检查?新手不懂,求教,谢谢!
暗爪侠 回答时间:2016-8-25 19:13:00
安 发表于 2016-8-25 09:22
SET和RESET和SET之间加延时。太快你根本看不到变化。

已经加到30000了还是不行啊,话说如果是频率太高的问题的话,为什么会是一直亮灯,而不是一直不亮呢?谢谢
123下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版