1、GPIO初始化

    1. #include "bsp_gpio.h"
    2. /*
    3. GPIO_Mode_IN = 0x00,
    4. GPIO_Mode_OUT = 0x01,
    5. GPIO_Mode_AF = 0x02,
    6. GPIO_Mode_AN = 0x03
    7. */
    8. /*
    9. GPIO_OType_PP = 0x00,
    10. GPIO_OType_OD = 0x01
    11. */
    12. /*
    13. GPIO_PuPd_NOPULL = 0x00,
    14. GPIO_PuPd_UP = 0x01,
    15. GPIO_PuPd_DOWN = 0x02
    16. */
    17. /*
    18. GPIO_Low_Speed = 0x00,
    19. GPIO_Medium_Speed = 0x01,
    20. GPIO_Fast_Speed = 0x02,
    21. GPIO_High_Speed
    22. */
    23. void GPIO_OUT_INIT()
    24. {
    25. //打开时钟
    26. RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC,ENABLE);
    27. //初始化IO口
    28. {
    29. GPIO_InitTypeDef GPIO_InitStruct;
    30. GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;
    31. GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
    32. GPIO_InitStruct.GPIO_OType= GPIO_OType_PP;
    33. GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;
    34. GPIO_InitStruct.GPIO_Speed= GPIO_Medium_Speed;
    35. GPIO_Init(GPIOC,&GPIO_InitStruct);
    36. }
    37. }
    38. void GPIO_IN_INIT()
    39. {
    40. //打开时钟
    41. RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);
    42. //初始化IO口
    43. {
    44. GPIO_InitTypeDef GPIO_InitStruct;
    45. GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2;
    46. GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
    47. // GPIO_InitStruct.GPIO_OType= GPIO_OType_PP;
    48. GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;
    49. // GPIO_InitStruct.GPIO_Speed= GPIO_Medium_Speed;
    50. GPIO_Init(GPIOB,&GPIO_InitStruct);
    51. }
    52. }

    2、函数相关功能

    1. uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    2. 例:i = GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_2);
    3. 读取PB2的数据
    4. uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
    5. 例:i = i = GPIO_ReadInputData(GPIOB);
    6. 读取PB的数据
    7. void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    8. 例:GPIO_SetBits(GPIOC,GPIO_Pin_13);
    9. PC13设置为高电平
    10. void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    11. 例:GPIO_ResetBits(GPIOC,GPIO_Pin_13);
    12. PC13设置为低电平
    13. void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
    14. 例:GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_SET);
    15. PC13设置为高电平
    16. void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
    17. 例:GPIO_Write(GPIOC, 0X0055);
    18. PC口输出设为0x0055;
    19. void GPIO_ToggleBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    20. 例:GPIO_ToggleBits(GPIOC,GPIO_Pin_13);
    21. PC13电平翻转