zoukankan      html  css  js  c++  java
  • STM32F103(二) GPIO实践

    转自:http://blog.csdn.net/robin7513/archive/2010/04/06/5455555.aspx

    硬件检测的工作很快完成了。接下来是开始调试一些程序了,对于调试一个新的MCU来说,最简单的也是最重要的自然是能够控制GPIO了。

        为了对MCU有个直观的了解,这里给出模块框图

        1、GPIO模式的相关介绍:

        STM32的所有GPIO都可以设置成8中模式,主要的设置可以参考固件库的typedefine

    /* Configuration Mode enumeration --------------------------------------------*/
    typedef enum
    {

        GPIO_Mode_AIN = 0x0,//AD输入模式
        GPIO_Mode_IN_FLOATING = 0x04,//普通输入模式(浮空)
        GPIO_Mode_IPD = 0x28,//带下拉输入模式
        GPIO_Mode_IPU = 0x48,//带上拉输入模式
        GPIO_Mode_Out_OD = 0x14,//开漏输出模式
        GPIO_Mode_Out_PP = 0x10,//推挽输出模式
        GPIO_Mode_AF_OD = 0x1C,//复用功能的开漏输出模式
        GPIO_Mode_AF_PP = 0x18//复用功能的推挽输出模式

    }GPIOMode_TypeDef;

        2、GPIO初始化

       通过系统模块图可以发现,所有的GPIO都处于APB2通道上的。所以要使用GPIO必须对APB2进行的相关设置。主要设置如下:

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//使能APB2中GPIOC的时钟

       然后就可以进行GPIO的初始化了,这里引用了一个典型例程来解释。

    void GPIO_Configuration(void)
    {

      GPIO_InitTypeDef GPIO_InitStructure;//声明一个GPIO_InitTypeDef

      /* Enable the USART2 Pins Software Remapping */
      GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);//重映射管脚

      /* Configure USART1 Tx (PA.09) as alternate function push-pull */
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;//指定初始化的引脚位
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//指定初始化GPIO的速度
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//设置GPIO的模式
      GPIO_Init(GPIOA, &GPIO_InitStructure);//利用GPIO_InitStructure来初始化GPIO

    }

        从上面的内容可以看出。主要的初始化步骤其实有两个。

       一个是填写GPIO_InitStructure中的内容

    /* GPIO Init structure definition */
    typedef struct
    {

      u16 GPIO_Pin;
      GPIOSpeed_TypeDef GPIO_Speed;
      GPIOMode_TypeDef GPIO_Mode;

    }GPIO_InitTypeDef;

       然后是利用GPIO_Init(。。。)函数来初始化指定的GPIO。

       最后可以使用

           GPIO_SetBits(GPIOC, GPIO_Pin_0 | GPIO_Pin_1);
           GPIO_ResetBits(GPIOC, GPIO_Pin_2 | GPIO_Pin_3);

    来使GPIO置1或置0。

    (其它更多操作,可以参考固件库说明手册)

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/robin7513/archive/2010/04/06/5455555.aspx

  • 相关阅读:
    1130
    Oracle 数据库常用操作语句大全
    Oracle用sys登陆报:ORA-28009:connection as sys should be as sysdba
    导出数据报ORA-39002: 操作无效 ORA-39070: 无法打开日志文件。 ORA-39087: 目录名 DUMP_DIR 无效
    SGI STL源码stl_bvector.h分析
    SGI STL源码stl_vector.h分析
    CGI 萃取技术 __type_traits
    迭代器iterator和traits编程技法
    智能指针分析及auto_ptr源码
    C++深拷贝和浅拷贝细节理解
  • 原文地址:https://www.cnblogs.com/hnrainll/p/1934120.html
Copyright © 2011-2022 走看看