STM32学习笔记1之通用GPIO

2017-6-19 / 5 评论 / 7663 阅读

开篇:

        已经很久未更新相关内容,由于工作原因,开始学习STM32,会将学习和工作遇到的任何问题和进展,都写下来,如果需要的伙伴可以加上书签在下面留言给我,共同探讨进步。

学习平台:    芯片:STM32F10x     库函数版本:V3.5.0         开发板:百为

由于需要马上上手,继而对于底层寄存器操作认识先行搁置,只要是已开发为主,所以采用官方提供的API接口 通过这些接口来实现对STM3210X的软件编写,

官方提供的固件库 :http://pan.baidu.com/s/1bp6bgcf


GPIO的函数和变量
 GPIO_InitTypeDef  GPIO_InitStructure;  
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;  //LED0-->PB.5 
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   
typedef struct
{
  uint16_t GPIO_Pin;             /*!< Specifies the GPIO pins to be configured. //0-15对应的管脚号
                                      This parameter can be any value of @ref GPIO_pins_define */
  GPIOSpeed_TypeDef GPIO_Speed;  /*!< Specifies the speed for the selected pins. //io口传输频率
                                      This parameter can be a value of @ref GPIOSpeed_TypeDef */
  GPIOMode_TypeDef GPIO_Mode;    /*!< Specifies the operating mode for the selected pins. 选择输入或输出且是否其他功能
                                      This parameter can be a value of @ref GPIOMode_TypeDef */
}GPIO_InitTypeDef;


#define GPIO_Pin_0                 ((uint16_t)0x0001)  /*!< Pin 0 selected */
#define GPIO_Pin_1                 ((uint16_t)0x0002)  /*!< Pin 1 selected */
#define GPIO_Pin_2                 ((uint16_t)0x0004)  /*!< Pin 2 selected */
#define GPIO_Pin_3                 ((uint16_t)0x0008)  /*!< Pin 3 selected */
#define GPIO_Pin_4                 ((uint16_t)0x0010)  /*!< Pin 4 selected */
#define GPIO_Pin_5                 ((uint16_t)0x0020)  /*!< Pin 5 selected */
#define GPIO_Pin_6                 ((uint16_t)0x0040)  /*!< Pin 6 selected */
#define GPIO_Pin_7                 ((uint16_t)0x0080)  /*!< Pin 7 selected */
#define GPIO_Pin_8                 ((uint16_t)0x0100)  /*!< Pin 8 selected */
#define GPIO_Pin_9                 ((uint16_t)0x0200)  /*!< Pin 9 selected */
#define GPIO_Pin_10                ((uint16_t)0x0400)  /*!< Pin 10 selected */
#define GPIO_Pin_11                ((uint16_t)0x0800)  /*!< Pin 11 selected */
#define GPIO_Pin_12                ((uint16_t)0x1000)  /*!< Pin 12 selected */
#define GPIO_Pin_13                ((uint16_t)0x2000)  /*!< Pin 13 selected */
#define GPIO_Pin_14                ((uint16_t)0x4000)  /*!< Pin 14 selected */
#define GPIO_Pin_15                ((uint16_t)0x8000)  /*!< Pin 15 selected */
#define GPIO_Pin_All               ((uint16_t)0xFFFF)  /*!< All pins selected */

typedef enum
{ 
  GPIO_Speed_10MHz = 1,  //选择传输MHz
  GPIO_Speed_2MHz, 
  GPIO_Speed_50MHz
}GPIOSpeed_TypeDef;
typedef enum
{ GPIO_Mode_AIN = 0x0,   
  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;
 GPIO_Init(GPIOB, &GPIO_InitStructure);   //设置GPIOB为初始化的IO引脚,且将GPIO_IniStructure对应刚才设置的结构体
    指针所包含的 PIN SPEED MODE)初始化 
GPIO_SetBits(GPIOB,GPIO_Pin_5);//置1  
GPIO_ResetBits(GPIOB,GPIO_Pin_5); //清0 
还有很多复用功能,继续添加  













    评论一下?

    OωO
    取消
      1. 头像
        宁国房产网
        第4楼
        辛苦了,谢谢分享!
        回复
      1. 头像
        代写paper
        地板
        支持楼主
        回复
      1. 头像
        定制论文服务
        板凳
        支持楼主
        回复
        1. 头像
          韭菜韭菜
          @定制论文服务:很好的学习文章!谢谢!
          回复
      1. 头像
        跨境电商培训
        沙发
        说的很好!!!
        回复