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

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

3天内不再提示

stm32mp1 Cortex M4开发篇4:GPIO外部中断详解

华清远见工控 2021-10-19 18:12 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

写在前面:

本文章为《ARM Cortex-M4裸机开发篇》系列中的一篇,,全系列总计14篇。笔者使用的开发平台为华清远见FS-MP1A开发板(STM32MP157开发板),Cortex-M4裸机开发篇除了讲M4裸机开发外,还会讲解通过M4控制资源扩展板上的各种传感器执行器模块(包括空气温湿度传感器LED灯、数码管、蜂鸣器、震动马达、按键中断、风扇等),本篇是M4控制资源扩展板中的一篇。

资源扩展板是FS-MP1A开发板的扩展模块,主要包含了10余种助主流传感器、执行器件、总线控制器件,非常方便项目扩展用。可拓展开发智慧家庭、智能医疗、智能安防、工业控制、图像识别、环境检测等方向的10个左右综合项目,华清远见开发板也将配套提供所有项目的说明文档、实验源码、应用程序等资料。

针对FS-MP1A开发板,除了Cortex-M4裸机开发篇外,还包括其他多系列教程,包括Cortex-A7开发篇、FreeRTOS篇、Linux基础及应用开发篇、Linux系统移植篇、Linux驱动开发篇、硬件设计篇、人工智能机器视觉篇、Qt应用编程篇、Qt综合项目实战篇等。d=622457259672

资源扩展板介绍&资源扩展板可开发项目

硬件介绍

poYBAGFn9z-AAMA3AAJtk6t7vns204.jpg

Cortex-M4 外部中断

实验目的

熟悉STM32CubeIDE工具软件的使用。

掌握STM32CubeIDE软件的基本设计流程和设计步骤,能够使用工具进行设计、编程、仿真调试。

学习GPIO口的使用方法,掌握如何利用STM32MP157A芯片的I/O口作为外部中断输入。

实验环境

FS-MP1A开发平台

ST-Link仿真器

STM32CubeIDE开发软件

PC机 XP、Window7/10 (32/64bit)

实验原理

本实验的原理主要是,通过开发板上按键K2的外部中断方式读取键值即IO口状态,控制LED点亮、熄灭查看实验现象。

v2-36e9a748ae2b517f7ace04cba6732efb_720w.jpg

v2-900386d4450c9161d745295e4a1b1c8a_720w.jpg

poYBAGD1gM-AUbhzAAAZU-WX2Vw836.png

配置IO口外部中断的步骤:

使能 IO 口时钟

初始化 IO 口模式,触发条件。

配置中断优先级( NVIC),并使能中断。

在中断服务函数中调用外部中断共用入口函数 HAL_GPIO_EXTI_IRQHandler。

编写外部中断回调函数。

通过以上几个步骤的设置,我们就可以正常使用外部中断了。

实验步骤

打开STM32CubeIDE->File->New->STM32 Project

poYBAGD1ME2AVPeTAACVnz-qkMk546.png

可以在左侧搜索框内输入芯片型号STM32MP157A进行搜索,选择对应芯片,点击Next

poYBAGFmcj-ASM-mAAC8KlaJkAU786.jpg

填写工程名,点击Finsh

poYBAGFuHe-AE_GjAABYyHfVcKI479.jpg

点击Yes打开配置页面

pYYBAGD1MFqAKmnWAAAp3TMlYLo989.png

搜索框内搜索LED对应GPIO引脚PZ5,左键点击设置为GPIO_output

搜索框内搜索K2对应GPIO引脚PA0,左键点击设置为GPIO_EXTI0

pYYBAGFuHe-AOXj-AACSidFBZTs324.jpg

这里我们需要注意一下,和其他单片机不同,还需要继续设置“ Pin Reservation”给“Cortex-M4”,否则STM32CubeMX不会生生成GPIO初始化相关代码。具体操作:在刚才选择的引脚上,鼠标右键选择“ Pin Reservation”->“ Cortex-M4”。

poYBAGFuHe-AXot-AAEokQv9s28673.jpg

在Code Generator处选择为每个外设生成单独的C和H文件,这样设置方便阅读代码

poYBAGD1MGmAams0AACpGOkAn0s579.png

完成以上设置后,Ctrl+S保存,会提示是否需要生成代码,选择Yes即可自动生成代码。系统会自动生成System Clock代码

poYBAGD1MG2ADAi6AAAgBCPP1k8477.png

可以在左侧工程文件夹找到EXIT_CM4子工程,打开stm32mp1xx_it.c

添加GPIO中断回调函数,自定义延时函数

C++ Code

1234567891011121314151617181920212223 int i = 0;int j = 0;void delay_my(uint8_t time){ for(i = 0; i < time * 10; i++) { for(j = 0; j < time; j++) {} }}void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin){ delay_my(10); if(GPIO_Pin == GPIO_PIN_0) { if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_SET)/* read PA0 state */ { HAL_GPIO_TogglePin(GPIOZ, GPIO_PIN_5); } }}

上述为新建工程配置过程,可参考12.3.2章节进行导入已有工程,工程存放路径【华清远见-FS-MP1A开发资料\02-程序源码\ARM体系结构与接口技术\Cortex-M4\3_EXTI】

配置完成或导入工程后进行程序下载,具体步骤参考12.3.3节进行开发板连接,程序编译、下载

实验现象

按下K2键,可看到LED灯状态发生改变

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

    关注

    6078

    文章

    45589

    浏览量

    673935
  • ARM
    ARM
    +关注

    关注

    135

    文章

    9589

    浏览量

    393774
  • 嵌入式
    +关注

    关注

    5209

    文章

    20679

    浏览量

    337312
  • STM32
    +关注

    关注

    2313

    文章

    11195

    浏览量

    374734
  • 开发板
    +关注

    关注

    26

    文章

    6433

    浏览量

    121175
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    探索LPC5410x:32位ARM Cortex - M4/M0+微控制器的卓越性能

    探索LPC5410x:32位ARM Cortex - M4/M0+微控制器的卓越性能 在嵌入式系统的设计领域,选择一款合适的微控制器是至关重要的。NXP的LPC5410x系列32位ARM
    的头像 发表于 04-27 17:25 412次阅读

    深入解析NXP LPC408x/7x:32位ARM Cortex - M4 MCU的卓越之选

    深入解析NXP LPC408x/7x:32位ARM Cortex - M4 MCU的卓越之选 在嵌入式系统设计领域,选择一款性能卓越、功能丰富的微控制器(MCU)至关重要。NXP的LPC408x
    的头像 发表于 04-09 09:45 140次阅读

    深入解析LPC408x/7x 32位ARM Cortex - M4微控制器

    深入解析LPC408x/7x 32位ARM Cortex - M4微控制器 在嵌入式应用领域,对于高集成度和低功耗的需求日益增长。NXP的LPC408x/7x 32位ARM Cortex -
    的头像 发表于 04-09 09:35 255次阅读

    MAX32570:用于安全应用的低功耗ARM Cortex - M4微控制器

    MAX32570:用于安全应用的低功耗ARM Cortex - M4微控制器 在电子设计领域,安全和低功耗一直是工程师们关注的重点。今天要为大家介绍的是Analog Devices的MAX32570
    的头像 发表于 03-26 16:50 327次阅读

    LPC43S50/S30/S20:32 位 ARM Cortex - M4/M0 微控制器的深度剖析

    LPC43S50/S30/S20:32 位 ARM Cortex - M4/M0 微控制器的深度剖析 在嵌入式系统设计领域,选择一款合适的微控制器至关重要。NXP 推出的 LPC43S50/S30
    的头像 发表于 03-15 17:10 1097次阅读

    M4 SMA整流二极管规格书

    M4 SMA/DO-214AC整流二极管,电流:1A 400V
    发表于 10-29 17:09 0次下载

    STM32MP257F-EV1评估板深度解析与技术应用指南

    STMicroelectronics STM32MP257F-EV1评估板是用于STM32MP257FAI3的开发平台,采用Arm® Cortex®-A35和
    的头像 发表于 10-20 11:49 1709次阅读
    <b class='flag-5'>STM32MP257F-EV1</b>评估板深度解析与技术应用指南

    Microchip SAM4C32 双核 Cortex-M4 微控制器:为智能电表与工业控制打造的高性能安全平台

    Microchip Technology ATSAM4C32 32位微控制器 (MCU) 是一款用于智能能源应用的系统级芯片 (SoC),基于两个高性能Arm® Cortex®-M4 RISC处理器
    的头像 发表于 10-14 16:08 1034次阅读
    Microchip SAM<b class='flag-5'>4</b>C32 双核 <b class='flag-5'>Cortex-M4</b> 微控制器:为智能电表与工业控制打造的高性能安全平台

    FAQ_MA35_Family M4 RAM如何调整M4的内存分配?

    FAQ_MA35_Family M4 RAM如何调整M4的内存分配?
    发表于 09-02 06:07

    在NuMicro® Cortex M0/M4系列中使用SWD(串行线调试)时,为什么进入掉电模式后功耗不会降低呢?

    在NuMicro® Cortex M0/M4系列中使用SWD(串行线调试)时,为什么进入掉电模式后功耗不会降低?
    发表于 08-29 07:40

    请问NuMicro® Cortex-M0/M4系列可以提供哪些USB器件示例代码?

    NuMicro® Cortex-M0/M4系列可以提供哪些USB器件示例代码?
    发表于 08-19 07:05

    stm32H745 M4核不能调试和下载怎么解决?

    stm32H745 Keil 调试时M7核可以下载和在线调试,M4核时就出现!如下问题,但是用!STM32CubeProgrammer能下载M4
    发表于 07-24 06:26

    使用STM32CubeIDE调试STM32MP157D的M4内核时报了下图这个错误,怎么解决?

    我使用STM32CubeIDE调试STM32MP157D的M4内核时报了下图这个错误: 经过我的排除后发现,应该是STM32CubeIDE上传&quot
    发表于 06-18 06:57

    STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4编程手册

    电子发烧友网站提供《STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4编程手册.pdf》资料
    发表于 06-06 17:06 17次下载

    stm32mp157的异核通信的rpmsg_sdb的m4固件和a7驱动该如何编写?

    stm32mp157的异核通信的rpmsg_sdb的m4固件和a7驱动该如何编写
    发表于 05-19 15:06