你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32G0-Platformio+libopencm3-按键和外部中断

[复制链接]
STMCU小助手 发布时间:2023-2-23 21:00
使用Platformio平台的libopencm3开发框架来开发STM32G0,下面为GPIO接按键的使用方式。

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

  1. 1upload_protocol = cmsis-dap
  2. 2debug_tool = cmsis-dap
复制代码


2 轮询方式使用按键
  • 设置GPIO为输入模式

  1. 1 //set gpio input button
  2. 2 gpio_mode_setup(GPIOC, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO11);
复制代码


  • 获取按键输入状态

  1. 1while (1)
  2. 2{
  3. 3    if(gpio_get(GPIOC,GPIO11)){
  4. 4        gpio_toggle(GPIOC,GPIO12);
  5. 5    }   
  6. 6}  
复制代码


使用gpio_get获取按键的状态;

3 外部中断方式使用按键
  • 设置GPIO外部中断

  1. 1void button_setup(void)
  2. 2{
  3. 3  rcc_periph_clock_enable(RCC_GPIOC);
  4. 4
  5. 5  nvic_enable_irq(NVIC_EXTI4_15_IRQ);
  6. 6
  7. 7  gpio_mode_setup(GPIOC,
  8. 8                GPIO_MODE_INPUT,
  9. 9                GPIO_PUPD_NONE,
  10. 10                GPIO11);
  11. 11
  12. 12  exti_select_source(EXTI11, GPIOC);
  13. 13  exti_set_trigger(EXTI11, EXTI_TRIGGER_FALLING);
  14. 14  exti_enable_request(EXTI11);
  15. 15}
复制代码


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

  • 中断函数

  1. 1/**
  2. 2 * @brief EXTI4-15 Interrupt service routine.
  3. 3 */
  4. 4void exti4_15_isr(void)
  5. 5{
  6. 6  exti_reset_request(EXTI11);
  7. 7
  8. 8  gpio_toggle(GPIOC, GPIO12);
  9. 9}
复制代码


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

转载自:MakerInChina.cn

收藏 评论0 发布时间:2023-2-23 21:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版