[STM32F0] GPIO口的高低电平不受控制

[复制链接]
1719|8
 楼主| aa911 发表于 2019-5-27 19:54 | 显示全部楼层 |阅读模式
GPIO口高低电平不受控制,下面是一段测试代码。无法把PF0、PF1、PC0、PC1、PC2拉低。MCU是STM32F072RBT6。基于STM32F0xx_StdPeriph_Lib_V1.5.0库。问题出在哪,请大家帮忙一下。
  1. void LED_Init(void)
  2. {             
  3.         GPIO_InitTypeDef  GPIO_InitStructure;

  4.         RCC_AHBPeriphResetCmd(RCC_AHBPeriph_GPIOA, ENABLE);//使能GPIOA时钟
  5.         RCC_AHBPeriphResetCmd(RCC_AHBPeriph_GPIOC, ENABLE);//使能GPIOC时钟
  6.         RCC_AHBPeriphResetCmd(RCC_AHBPeriph_GPIOF, ENABLE);//使能GPIOF时钟
  7.        

  8.        
  9.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;//LED0和LED1对应IO口
  10.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式
  11.         GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
  12.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  13.         //GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  14.         GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化GPIO
  15.         GPIO_SetBits(GPIOF,GPIO_Pin_0 | GPIO_Pin_1);//GPIOF0,F1设置高,灯灭
  16.        
  17.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
  18.         GPIO_Init(GPIOA, &GPIO_InitStructure);
  19.         GPIO_ResetBits(GPIOA,GPIO_Pin_15);
  20.        
  21.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 |GPIO_Pin_1|GPIO_Pin_2;//LED0和LED1对应IO口
  22.         GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化GPIO       
  23.         GPIO_SetBits(GPIOC,GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2);
  24.        

  25. }
 楼主| aa911 发表于 2019-5-27 19:55 | 显示全部楼层
其他IO口也无法操作
香水城 发表于 2019-5-28 22:28 | 显示全部楼层
你使能GPIO时钟要使用这个函数:
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);

另外,如果可能的话,建议使用Cube库来开发,F1/F0那些系列的标准库不会做更新了的。
何况基于CUBEMX 图形化配置工具做基本配置会省很多事,我们把重点放在用户应用函数的编写、调试方面。
 楼主| aa911 发表于 2019-6-1 22:41 | 显示全部楼层
香水城 发表于 2019-5-28 22:28
你使能GPIO时钟要使用这个函数:
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);

非常感谢你的帮忙,是我粗心了,另外我也在尝试用cubemx,刚接触还没有上手,以后请多多指教。
xfbobowu 发表于 2019-6-2 09:44 | 显示全部楼层
函数用错了,开端口应该用的是:RCC_APB2PeriphClockCmd 这个函数。
 楼主| aa911 发表于 2019-6-6 17:57 | 显示全部楼层
本帖最后由 aa911 于 2019-6-6 18:01 编辑

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
改成这样之后还是控制不了IO口,所有的IO口都不受控制,我怀疑是MCU根本都没有正常工作。板子是以前别人画的demo板,用他的代码可以正常工作。我自己下载STM32F0的模板库,demo板无法正常工作。
 楼主| aa911 发表于 2019-6-6 17:59 | 显示全部楼层
香水城 发表于 2019-5-28 22:28
你使能GPIO时钟要使用这个函数:
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
改成这样之后还是控制不了IO口,所有的IO口都不受控制,我怀疑是MCU根本都没有正常工作。板子是以前别人画的demo板,用他的代码可以正常工作。我自己下载STM32F0的模板库,demo板无法正常工作。
晓伍 发表于 2019-6-18 09:10 | 显示全部楼层
貌似没偶时钟使能啊
八层楼 发表于 2019-6-18 09:13 | 显示全部楼层
直接用cube生成的代码就不会有这种问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

69

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部