• STM32 cubeMX + keil5 HAL库 GPIO高低点平控制


    设备型号: STM32F103C6F6

    每个GPIO针脚都所属一个分区(GPIOA、GPIOB、GPIOC、GPIOD),每个分区下有16个针脚,所以第二个参数是0-15

     上图是cubeMX配置界面, 例如PC13(P=针脚,C=GPIOC,3=位置3)针脚,属于GPIOC区,位置13(上图核心板自带LED),通过控制高低点平,控制LED灯开关。再比如PD0,属于GPIOD区, 0位置

    核心板自带LED标记:

     PWR: 电源指示

    PC13:板载LED针脚位置,GPIOC区,13位置

    HAL 库高低点平相关API

     GPIO_PinState:

    typedef enum
    {
      GPIO_PIN_RESET = 0u,//低电平
      GPIO_PIN_SET//高电平
    } GPIO_PinState;

    读取指定针脚高低点平:

    GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)

    参数一: GPIO所在分区,一般分为GPIOA、GPIOB、GPIOC、GPIOD等

    参数二: 针脚位置 0-15

    返回 GPIO_PinState 枚举: GPIO_PIN_RESET 低电平, GPIO_PIN_SET 高电平

    设置指定针脚高低点平:

    void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)

    参数一:  GPIO所在分区

    参数二: 针脚位置 0-15

    参数三: 置高/低点平(GPIO_PIN_RESET / GPIO_PIN_SET)

    例如,设置PA12为高电平,前提需要在cubeMX中配置PA12 GPIO Output,或代码中配置 GPIO Output:

    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_SET);

     针脚位置,要使用cubeMX生成代码时,在stm32f1xx_hal_gpio.h中声明的针脚定义:

    #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 */

    kiel5 仿真中,查看高低点平:

    设置Debug参数:

    设置CPU 和Driver 的Dialog DLL, Dialog DLL分别为: DARMSTM.DLL,TARMSTM.DLL,参数为: -pSTM32F103RC

     2. 开始调试:

    Debug -> Start/Stop Debug Session(Ctrl + F5)

    跳过断点执行,具体Debug 操作请自行百度。

    查看针脚高低点平状态:

    一定要按照上图配置好Dialog DLL,和参数,否则没有General Purpose I/O菜单!!!

    Peripherals -> General Purpose I/O -> GPIOC(针脚所在分区,想查看的针脚所在分区)

     

     已使能针脚,在打钩时,表示高电平,未打钩时表示低电平

  • 相关阅读:
    Python分析网页中的<a>标签
    Python3.X爬虫
    如何使你的窗体样式固定,不因系统设定而变化
    C# 窗体内有子控件时鼠标检测
    VS新建项目工具箱图标丢失问题
    在c#中使用bitblt显示图片
    DotNetBar 中Ribbon汉化
    汉化DotNetBar中控件的系统文本
    castle动态代理的使用
    FastReport 套打全攻略
  • 原文地址:https://www.cnblogs.com/GengMingYan/p/15614068.html
Copyright © 2020-2023  润新知