请问这段程序问题在哪里?

2019-08-13 20:27发布

//很简单的只是拉高拉低PB6,但是就是不能实现

ErrorStatus HSEStartUpStatus;

void RCC_Configuration(void)
{
    /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration -----------------------------*/   

  /* RCC system reset(for debug purpose) */
        RCC_DeInit();

  /* Enable HSE */
        RCC_HSEConfig(RCC_HSE_ON);

  /* Wait till HSE is ready */
        HSEStartUpStatus = RCC_WaitForHSEStartUp();

        if(HSEStartUpStatus == SUCCESS)
        {
    /* Enable Prefetch Buffer */
                FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

    /* Flash 2 wait state */
                FLASH_SetLatency(FLASH_Latency_2);

    /* HCLK = SYSCLK */
                RCC_HCLKConfig(RCC_SYSCLK_Div1);

    /* PCLK2 = HCLK */
                RCC_PCLK2Config(RCC_HCLK_Div1);

    /* PCLK1 = HCLK/2 */
                RCC_PCLK1Config(RCC_HCLK_Div2);  // 36MZH

    /* On STICE the PLL output clock is fixed to 48 MHz */
                RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);

    /* Enable PLL */
                RCC_PLLCmd(ENABLE);

    /* Wait till PLL is ready */
                while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
                {
                }

    /* Select PLL as system clock source */
                RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

    /* Wait till PLL is used as system clock source */
                while(RCC_GetSYSCLKSource() != 0x08)
                {
                }
        }

}

void Delay(vu32 nCount)
{
  for(; nCount!= 0;nCount--);
}


int main(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
       
        RCC_Configuration();
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);         
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD;
        GPIO_Init(GPIOB,&GPIO_InitStructure);
        GPIO_ResetBits(GPIOB,GPIO_Pin_6);
       
         while(1)
         {
                        GPIO_SetBits(GPIOB,GPIO_Pin_6);
                        Delay(500);
                        GPIO_ResetBits(GPIOB,GPIO_Pin_6);
                        Delay(500);
         }
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
liuliupiaoxue
1楼-- · 2019-08-14 00:03
应是GPIO 模式问题,将GPIO_Mode_Out_OD改为GPIO_Mode_Out_PP应该就可以了。
DongInker
2楼-- · 2019-08-14 05:06
OD模式是靠管脚外部上拉提现高电平的。
meimengxing2014
3楼-- · 2019-08-14 05:44
 精彩回答 2  元偷偷看……
dong930623
4楼-- · 2019-08-14 07:27
开漏外部没有上拉的话是不行的,GPIO配置里 将GPIO_Mode_Out_OD改为GPIO_Mode_Out_PP即可
八度空间
5楼-- · 2019-08-14 12:21
liuliupiaoxue 发表于 2017-10-12 00:57
应是GPIO 模式问题,将GPIO_Mode_Out_OD改为GPIO_Mode_Out_PP应该就可以了。

不是应该,就是这个问题
feicien
6楼-- · 2019-08-14 17:09
liuliupiaoxue 发表于 2017-10-11 23:48
应是GPIO 模式问题,将GPIO_Mode_Out_OD改为GPIO_Mode_Out_PP应该就可以了。

对的,已解决,谢谢了!

一周热门 更多>