OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2094|回复: 6

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

[复制链接]

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2013-6-2
在线时间
12 小时
发表于 2017-10-11 23:48:20 | 显示全部楼层 |阅读模式
10金钱
//很简单的只是拉高拉低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);
         }
}

最佳答案

查看完整内容[请看2#楼]

应是GPIO 模式问题,将GPIO_Mode_Out_OD改为GPIO_Mode_Out_PP应该就可以了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

73

帖子

0

精华

高级会员

Rank: 4

积分
659
金钱
659
注册时间
2017-5-19
在线时间
146 小时
发表于 2017-10-11 23:48:21 | 显示全部楼层
应是GPIO 模式问题,将GPIO_Mode_Out_OD改为GPIO_Mode_Out_PP应该就可以了。
回复

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2017-10-12 08:17:22 | 显示全部楼层
OD模式是靠管脚外部上拉提现高电平的。
让我们的思维驾驭在电的速度之上!
回复

使用道具 举报

3

主题

130

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3131
金钱
3131
注册时间
2017-3-2
在线时间
324 小时
发表于 2017-10-12 08:36:13 | 显示全部楼层
楼上两位正解,漏极开漏模式需外接上拉电阻来拉高,配置为推挽输出即可
坚持不懈的努力!
回复

使用道具 举报

7

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
177
金钱
177
注册时间
2014-9-2
在线时间
20 小时
发表于 2017-10-12 08:47:06 | 显示全部楼层
开漏外部没有上拉的话是不行的,GPIO配置里 将GPIO_Mode_Out_OD改为GPIO_Mode_Out_PP即可
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2017-10-12 08:56:09 | 显示全部楼层
liuliupiaoxue 发表于 2017-10-12 00:57
应是GPIO 模式问题,将GPIO_Mode_Out_OD改为GPIO_Mode_Out_PP应该就可以了。

不是应该,就是这个问题
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2013-6-2
在线时间
12 小时
 楼主| 发表于 2017-10-12 09:26:08 | 显示全部楼层
liuliupiaoxue 发表于 2017-10-11 23:48
应是GPIO 模式问题,将GPIO_Mode_Out_OD改为GPIO_Mode_Out_PP应该就可以了。

对的,已解决,谢谢了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 16:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表