[STM32F1]

这个代码的问题在哪里

[复制链接]
508|15
手机看帖
扫描二维码
随时随地手机跟帖
zwll|  楼主 | 2019-2-15 11:27 | 显示全部楼层 |阅读模式
//很简单的只是拉高拉低PB6,但是调试就是不能拉高拉低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);
         }
}
liuzaiy| | 2019-2-15 11:30 | 显示全部楼层
其他IO可以拉高拉低吗?

使用特权

评论回复
juventus9554| | 2019-2-15 11:34 | 显示全部楼层
不能拉高拉低是几个意思,现在是什么电平呢?

使用特权

评论回复
liuzaiy| | 2019-2-15 11:38 | 显示全部楼层
设置成上拉输出试下

使用特权

评论回复
stly| | 2019-2-15 11:41 | 显示全部楼层

有没有上拉电阻?
芯片工作正常不?

使用特权

评论回复
handlike| | 2019-2-15 11:44 | 显示全部楼层
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD;
把上面的开漏输出改为推挽式输出就好了。

使用特权

评论回复
llljh| | 2019-2-15 11:44 | 显示全部楼层
说现象,从现象分析问题!

使用特权

评论回复
dingy| | 2019-2-15 11:49 | 显示全部楼层
你试试改成另一个管脚,如果能上拉,说明代码没问题,是管脚有小电阻的负载

使用特权

评论回复
jiahy| | 2019-2-15 11:52 | 显示全部楼层
推挽有什么不对吗?

使用特权

评论回复
pengf| | 2019-2-15 11:55 | 显示全部楼层

有没有上拉电阻?

使用特权

评论回复
supernan| | 2019-2-15 11:59 | 显示全部楼层

  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD;
改成:
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

使用特权

评论回复
zwll|  楼主 | 2019-2-15 12:02 | 显示全部楼层
已经可以了,自己的问题设成推挽输出

使用特权

评论回复
wakayi| | 2019-3-5 16:50 | 显示全部楼层
是不是跟你的外部硬件电路有关系啊

使用特权

评论回复
wowu| | 2019-3-5 16:53 | 显示全部楼层
恭喜楼主解决问题

使用特权

评论回复
xiaoqizi| | 2019-3-5 16:58 | 显示全部楼层
原来只是io口模式的问题

使用特权

评论回复
木木guainv| | 2019-3-5 17:02 | 显示全部楼层
原来区别这么大啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

885

主题

11314

帖子

5

粉丝