0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32G0开发笔记:GPIO接按键的使用方式

CHANBAEK 来源:电子技术攻城狮 作者:MakerInChina.cn 2023-01-17 10:48 次阅读

使用Platformio平台的libopencm3开发框架来开发STM32G0,下面为GPIO接按键的使用方式。

1 新建项目

  • PIO主页新建项目button,框架选择libopencm3,开发板选择 MonkeyPi_STM32_G070RB;
  • 新建完成后在src目录新建主程序文件main.c;
  • 然后更改项目文件platformio.ini的烧写和调试方式:
1upload_protocol = cmsis-dap
2debug_tool = cmsis-dap

2 轮询方式使用按键

  • 设置GPIO为输入模式
1 //set gpio input button
2 gpio_mode_setup(GPIOC, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO11);
  • 获取按键输入状态
1while (1)
2{
3    if(gpio_get(GPIOC,GPIO11)){
4        gpio_toggle(GPIOC,GPIO12);
5    }    
6}

使用gpio_get获取按键的状态;

3 外部中断方式使用按键

  • 设置GPIO外部中断
1void button_setup(void)
 2{
 3  rcc_periph_clock_enable(RCC_GPIOC);
 4
 5  nvic_enable_irq(NVIC_EXTI4_15_IRQ);
 6
 7  gpio_mode_setup(GPIOC,
 8                GPIO_MODE_INPUT,
 9                GPIO_PUPD_NONE,
10                GPIO11);
11
12  exti_select_source(EXTI11, GPIOC);
13  exti_set_trigger(EXTI11, EXTI_TRIGGER_FALLING);
14  exti_enable_request(EXTI11);
15}

设置GPIOC11外部中断,引脚设置为输入模式,然后开启中断,并设置中断下降沿触发方式;

  • 中断函数
1/**
2 * @brief EXTI4-15 Interrupt service routine.
3 */
4void exti4_15_isr(void)
5{
6  exti_reset_request(EXTI11);
7
8  gpio_toggle(GPIOC, GPIO12);
9}

外部中断4-15共用中断函数exti4_15_isr。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348736
  • 中断
    +关注

    关注

    5

    文章

    884

    浏览量

    41023
  • 函数
    +关注

    关注

    3

    文章

    3868

    浏览量

    61308
  • 按键
    +关注

    关注

    4

    文章

    220

    浏览量

    57338
  • GPIO
    +关注

    关注

    16

    文章

    1133

    浏览量

    50570
收藏 人收藏

    评论

    相关推荐

    基于STM32的USB程序开发笔记 汇总

    忙了一下午终于有时间整理了,基于STM32的USB程序开发笔记汇总,需要的亲们点击链接阅读哈!{:4_95:}基于STM32的USB程序开发笔记(一)https://bbs.elecf
    发表于 03-20 16:08

    坛友经验分享之STM32的USB程序开发笔记

    基于STM32的USB程序开发笔记(一)基于STM32的USB程序开发笔记(二)基于STM32的USB程序
    发表于 09-04 17:42

    如何去实现一种基于STM32G0按键控制LED亮灭设计

    STM32 NUCLEO-G071RB开发板有何功能?如何去实现一种基于STM32G0按键控制LED亮灭设计?
    发表于 10-08 06:57

    STM32的USB程序开发笔记

    STM32的USB程序开发笔记
    发表于 09-29 14:55 27次下载
    <b class='flag-5'>STM32</b>的USB程序<b class='flag-5'>开发笔记</b>

    stm32开发笔记(二):stm32系列使用V3.5固件库的帮助文件以及GPIO基本功能(一)

    stm32开发笔记(二):stm32系列使用V3.5固件库的帮助文件以及GPIO基本功能(一)
    发表于 12-01 19:51 3次下载
    <b class='flag-5'>stm32</b><b class='flag-5'>开发笔记</b>(二):<b class='flag-5'>stm32</b>系列使用V3.5固件库的帮助文件以及<b class='flag-5'>GPIO</b>基本功能(一)

    STM32开发笔记56: STM32F407VGT6的解释

    STM32开发笔记56: STM32F407VGT6的解释
    发表于 12-02 16:51 47次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>开发笔记</b>56: <b class='flag-5'>STM32</b>F407VGT6的解释

    STM32G0开发笔记:FreeRTOS和FreeModbus库使用

    使用Platformio平台的libopencm3开发框架来开发STM32G0,以下为FreeRTOS和FreeModbus库使用。
    的头像 发表于 01-16 14:44 3875次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发笔记</b>:FreeRTOS和FreeModbus库使用

    STM32G0开发笔记:使用FreeRTOS系统的队列Queue

    使用Platformio平台的libopencm3开发框架来开发STM32G0,下面为使用FreeRTOS系统的队列Queue。
    的头像 发表于 01-16 14:50 962次阅读

    STM32G0开发笔记:使用FreeRTOS系统

    使用Platformio平台的libopencm3开发框架来开发STM32G0,下面为使用FreeRTOS系统。
    的头像 发表于 01-16 15:07 1571次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发笔记</b>:使用FreeRTOS系统

    STM32G0开发笔记:用PWM来实现LED呼吸灯效果

    使用Platformio平台的libopencm3开发框架来开发STM32G0,下面使用PWM来实现LED呼吸灯效果。
    的头像 发表于 01-16 15:15 1678次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发笔记</b>:用PWM来实现LED呼吸灯效果

    STM32G0开发笔记:SD卡模块的使用方法

    使用Platformio平台的libopencm3开发框架来开发STM32G0,下面介绍SD卡模块的使用方法。
    的头像 发表于 01-19 16:27 1407次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发笔记</b>:SD卡模块的使用方法

    STM32G0开发笔记:SPI接口的基本使用

    使用Platformio平台的libopencm3开发框架来开发STM32G0,下面介绍SPI接口的基本使用。
    的头像 发表于 01-17 10:38 2507次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发笔记</b>:SPI接口的基本使用

    STM32G0开发笔记:多通道ADC与DMA的使用

    使用Platformio平台的libopencm3开发框架来开发STM32G0,以下为多通道ADC与DMA的使用。
    的头像 发表于 01-17 10:41 5269次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发笔记</b>:多通道ADC与DMA的使用

    STM32G0开发笔记:LED灯示例

    使用Platformio平台的libopencm3开发框架来开发STM32G0,下面为LED灯示例。
    的头像 发表于 01-17 10:52 981次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发笔记</b>:LED灯示例

    STM32G0开发笔记:使用libopencm3库

    使用Platformio平台的libopencm3开发框架来开发STM32G0开发环境为VSCode+PIO插件,这里以开发
    的头像 发表于 01-17 10:56 1327次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发笔记</b>:使用libopencm3库