前言

学习stm32 GPIO 的外部中断使用,用中断模式实现简单的按键输入功能,用按实现基础实验二中的LED亮灭切换功能!

示例详解

基于硬件平台: STM32F10C8T6最小系统板, MCU 的型号是 STM32F103c8t6, 使用stm32cubemx 工具自动产生的配置工程,使用KEIL5编译代码。将PA0引脚设置成外部中断输入引脚(中断模式设为下降沿中断),程序得到PA0引脚的(按键操作)输入状态,并根据其输入电平的高低来控制PC13输出,来控制LED,实现按一次LED亮,再按一下,LED灭的功能。

本示例所用的最小系统板原理图:

  1. 新建STM32 CUBEMX 工程,

    1. 双击桌面STM32CubeMX工具

  1. 在CubeMX中菜单中点 File à New Project …

  1. 在新弹出的界面中的搜索框中输入 “stm32f103c8” ,并双击右侧栏中列出的STM32F103C8

  1. 弹出如下图所示界面,至此工程创建完成!!接下是就是配置工程:

  1. 配置STM32 CUBEMX 工程

    1. 配置系统伏仿真调试接口, 在System Core 目录下单击SYS选项,将其中的Debug选项选为Serial Wire, 此时PA13 PA14引脚会被占用,配置图如下:

  1. 配置系统时钟源,在System Core 目录下单击RCC选项,将其中的High Speed Clock( HSE )选项选为Crystal/ceramic resona…, 此时PD0 PD1引脚会被占用,配置图如下:

  1. 配置GPIO PA0 及 PC13引脚,详细配置如下。

同时在NVIC项中开启EXTI line0 interrupt 中断,详细配置图如下:

  1. 配置系统时钟树,将工程界面切换到Clock Configureation 界面,完成如下配置。

  1. 配置代码生成,工程界面切换到Project Manager 界面,在界面左侧单击Project项,将其设置成如下图所示( 设置工程路径在E:\Stm32cubePrj目录,工程名为stm32_key, 开发环境为 MDK-ARM v5 )。

在界面左侧单击Code Generator项,将其设置成如下图所示( 只拷贝所需文件到工程,为每个接口生成独立的初始化头文件和源文件,将所有未使用的引脚设为模拟输入)。

  1. 生成代码,单击工程界面中”GENERATE TOOL” 开始生成代码,代码生成后弹出是否打开工程对话框,单击“Open Project”打开创建的工程。

  1. 在代码工程(MDK/keil)中的 stm32f1xx_it.c 中 EXTI0_IRQHandler函数中如下红框中代码:

  1. 编译工程

  1. 烧录代码,在代码工程中单击“Options for Target” 图标,在弹出的窗口中选中“Debug”页,选择相应的烧录工具(如本示例所用是jlink工具),然后单击右侧“Setting”按钮,将Port 设为“SW”, 最大速度建议不要超过5M(有此仿真调式工具接线过长,可以将最大速度设为100K,这样可以保证烧录成功),

接着选“flash Download”页,勾选“Reset and Run”,并确保其它内容如下图所示:

设置完上述设置后,便可进行下载操作,将调试仿真工具中的与最小系统板连接好,在工程中点Download 按钮,或按F8快捷键进入下载,下载完成后会出现如下图所示提示信息。

  1. 到此,操作GPIO引脚按键功能演示完成,实现了按一下按键(PA0引脚由高变低一次),LED输出PC13状态实现一次反转。

HAL_Delay(50);  // 按键消抖延时

// 确定是按下

if( HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) ==  GPIO_PIN_RESET )

HAL_GPIO_TogglePin( GPIOC,GPIO_PIN_13 );

OK,本期实验完成!下期见!同时如果大家有什么疑问或是有想了解的其它内容,也欢迎大家留言!!最后喜欢这个公众号的同学们记得加关注了,每天都会有技术干货推出!!

文中资料下载,在公众号里给十三发消息:

下载|STM32基础系列教程2

关注十三公众号

STM32 基础系列教程 3 – 外部中断相关推荐

  1. STM32 基础系列教程 12 – ADC 中断

    前言 学习stm32 adc模数转换接口使用,学会用STM32对模拟信号时行采样,通过中断模式得到ADC结果. 示例详解 基于硬件平台: STM32F10C8T6最小系统板, MCU 的型号是 STM ...

  2. STM32 基础系列教程 41 – SDMMC

    前言 SDIO(Secure Digital Input and Output) 安全数字输入输出接口,它支持多种类型的MMC卡,如SD卡,SDIO卡,MMC卡等.STM32 的SD/SDIO MMC ...

  3. STM32 基础系列教程 21 - NVIC

    前言 学习stm32 NVIC接口编程,学会使用常用的NVIC接口函数,优改中关优先级,开/关单个中断,开/关所有中断,开/关所有中断和异常,系统软件重启等功能. 示例详解 基于硬件平台: STM32 ...

  4. STM32 基础系列教程 19 – WWDG

    前言 学习stm32 窗口看门狗(WWDG)接口使用,学会用STM32内部窗口看门狗(WWDG)接口实现程序异常时自复位功能.WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序.窗口看门狗由从 ...

  5. STM32 基础系列教程 16 - I2S(模拟)

    前言 学习stm32 I2S接口使用,学会用I2S接口收发数据,学习I2S总线相关知识, I2S(Inter-IC Sound)总线, 又称 集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频 ...

  6. STM32 基础系列教程 50 – MbedTls

    前言 mbed TLS(以前称为PolarSSL)是TLS和SSL协议的实现,并且需要相应的加密算法和支持代码.这是双重许可与Apache许可证 2.0版(与GPLv2许可也可).网站上指出,mbed ...

  7. STM32 基础系列教程 43 – SRAM

    前言 STM32F407ZGT6 自带了 192K 字节的 SRAM,对一般应用来说,已经足够了,不过在一些对内存要求高的场合, 比如跑算法或者跑 GUI 等,自带的这些内存就不够用了.比如跑算法或者 ...

  8. STM32 基础系列教程 42 - SDMMC+Fatfs

    前言 本节我们将基于42讲 "STM32 基础系列教程 41 - SDMMC" 的基础来实现基于SD卡文件系统的文件操作. 示例详解 基于硬件平台: 正点源子的stm32f4 探索 ...

  9. STM32 基础系列教程 39 - Lwip_tftp

    前言 文件传输协议(英文:File Transfer Protocol,缩写:FTP)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式.它属于网络传输协议的应用层.文件传送(file t ...

最新文章

  1. 信通院2018人工智能发展白皮书技术篇重磅发布
  2. es5 - array - pop
  3. VTK:邻接矩阵到 EdgeTable用法实战
  4. WinDBg定位asp.net mvc项目异常崩溃源码位置
  5. Hadoop HIVE 基本函数
  6. 层次化防御保证企业门户网站安全
  7. 几个常用的文本处理shell 命令:find、grep、sort、uniq、sed、awk
  8. 配置pytoch版人脸关键点网络pfld docker环境
  9. python复杂网络分析_科学网—复杂网络分析库NetworkX学习笔记(3):网络演化模型 - 闫小勇的博文...
  10. Netty实战——Channel、EventLoop和ChannelFuture详解
  11. Java小白入门:聊聊Java这门编程语言
  12. 新浪微博指数查询API接口文档
  13. 抖音主页头图怎么设置,掌握以下5点技巧即可丨国仁网络资讯
  14. 研究生跟了一个很棒的导师是种怎样的体验?
  15. 深信服邮件服务器配置,使用深信服设备实现邮件服务器高可用
  16. websocket即时通讯
  17. Word保存高清图片
  18. HLS第三十八课(xfopencv,H文件和HPP文件的使用)
  19. 写给‘真‘零经验的童鞋学习编程的建议
  20. 原生小程序使用 flyio,以及拦截器

热门文章

  1. UVA11892 ENimEN —— 博弈
  2. nginx配置ssl双向证书
  3. Ubuntu - 安装 jdk 、配置 Java 环境变量、编辑 Test.java 文件并输出 Hello World!
  4. 08_传智播客iOS视频教程_Foundation框架
  5. Django L6 编写你的第一个Django应用
  6. Recommend索引
  7. python中 str.strip()用法
  8. jsp动作元素include学习
  9. 80x86汇编按二进制输出数字的程序图解和代码解释
  10. nginx和apache 配置