立创·天空星开发板-GD32F407VE-EXTI

2024-06-08 05:28

本文主要是介绍立创·天空星开发板-GD32F407VE-EXTI,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文以 立创·天空星开发板-GD32F407VET6-青春版 作为学习的板子,记录学习笔记。

立创·天空星开发板-GD32F407VE-EXTI

    • 中断
    • 硬件触发中断示例
    • 软件触发中断示例

中断

中断分为内部中断和外部中断

外部中断是由外部设备(如按键、传感器、通信接口等)产生的中断请求信号,需要通过中断控制器进行处理。

通常情况下,外部中断是通过中断输入引脚连接到中断控制器,由中断控制器检测到外部中断请求,然后触发相应的中断服务程序进行处理。

内部中断是由处理器内部产生的中断请求信号,通常是由串口、定时器、DMA控制器、系统时钟等硬件设备产生的中断请求,需要通过中断控制器进行处理。

与外部中断不同的是,内部中断不需要外部设备的触发,而是由硬件设备自身产生中断请求,由中断控制器检测到并触发相应的中断服务程序进行处理。

中断思维导图

硬件触发中断示例

使用外部中断来检测 PA0 的电平变化。代码如下:

#include "gd32f4xx.h"
#include "systick.h"#include "ExtendedUSART.h"// 核心板 PA0 引脚触发中断的配置
void EXTI0_config() {// PA0rcu_periph_clock_enable(RCU_GPIOA);gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_0);// SYSCFGrcu_periph_clock_enable(RCU_SYSCFG);syscfg_exti_line_config(EXTI_SOURCE_GPIOA, EXTI_SOURCE_PIN0);// NVICnvic_irq_enable(EXTI0_IRQn, 2, 2);// EXTIexti_init(EXTI_0, EXTI_INTERRUPT, EXTI_TRIG_BOTH);exti_interrupt_enable(EXTI_0);exti_interrupt_flag_clear(EXTI_0);
}void EXTI0_IRQHandler() {if(SET == exti_interrupt_flag_get(EXTI_0)) {exti_interrupt_flag_clear(EXTI_0);if(RESET == gpio_input_bit_get(GPIOA, GPIO_PIN_0)) {printf("EXTI_0 interrupted by PA0 released!");} else {printf("EXTI_0 interrupted by PA0 pressed!");}}
}int main(void) {systick_config();EXTI0_config();USART0_config();USART0_send_string("GD32 is running!\r\n");while(1) { }
}

软件触发中断示例

#include "gd32f4xx.h"
#include "systick.h"#include "ExtendedUSART.h"// 软件触发中断的配置
void EXTI2_config() {// NVICnvic_irq_enable(EXTI2_IRQn, 2, 2);// EXTIexti_init(EXTI_2, EXTI_INTERRUPT, EXTI_TRIG_NONE);exti_interrupt_enable(EXTI_2);exti_interrupt_flag_clear(EXTI_2);
}void EXTI2_IRQHandler() {if(SET == exti_interrupt_flag_get(EXTI_2)) {exti_interrupt_flag_clear(EXTI_2);printf("EXTI_2 interrupted!\n");}
}void USART0_on_received(uint8_t* dat, uint32_t len) {printf("received data: %s. ", dat);// 当串口收到数据后。手动触发中断exti_software_interrupt_enable(EXTI_2);
}int main(void) {systick_config();EXTI2_config();USART0_config();USART0_send_string("GD32 is running!\r\n");while(1) { }
}

这篇关于立创·天空星开发板-GD32F407VE-EXTI的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1041311

相关文章

QT移植到RK3568开发板的方法步骤

《QT移植到RK3568开发板的方法步骤》本文主要介绍了QT移植到RK3568开发板的方法步骤,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录前言一、获取SDK1. 安装依赖2. 获取SDK资源包3. SDK工程目录介绍4. 获取补丁包二

开发板NFS挂载文件目录

文章目录 序NFS1. 安装 NFS 服务器和客户端在服务器上(NFS 服务器端)在客户端上(NFS 客户端) 2. 配置 NFS 服务器创建共享目录编辑 `/etc/exports` 文件启动 NFS 服务 3. 在客户端挂载 NFS 共享创建挂载点挂载 NFS 共享验证挂载 4. 设置开机自动挂载5. 解决权限问题 序 本节主要实现虚拟机(服务器)与开发板(客户端)通过N

C8T6超绝模块--EXTI

C8T6超绝模块–EXTI 大纲 控制流程结构体分析EXTI实现按键 具体案例 控制流程 这里是流程框图,具体可以去看我STM32专栏的EXTI的具体分析 结构体分析 typedef struct {uint32_t EXTI_Line; // 中断/事件线EXTIMode_TypeDef EXTI_Mode; // EXTI 模式EXTITrigger_TypeDef EXTI_

安卓开发板_联发科MTK开发评估套件串口调试

串口调试 如果正在进行lk(little kernel ) 或内核开发,USB 串口适配器( USB 转串口 TTL 适配器的简称)对于检查系统启动日志非常有用,特别是在没有图形桌面显示的情况下。 1.选购适配器 常用的许多 USB 转串口的适配器,按芯片来分,有以下几种: CH340PL2303CP2104FT232 一般来说,采用 CH340 芯片的适配器,性能比较稳定,价

正点原子阿尔法ARM开发板-IMX6ULL(二)——介绍情况以及汇编

文章目录 一、裸机开发(21个)二、嵌入式Linux驱动例程三、汇编3.1 处理器内部数据传输指令3.2 存储器访问指令3.3 压栈和出栈指令3.4 跳转指令3.5 算术运算指令3.6 逻辑运算指令 一、裸机开发(21个) 二、嵌入式Linux驱动例程 三、汇编 我们在进行嵌入式 Linux 开发的时候是绝对要掌握基本的 ARM 汇编,因为 Cortex-A 芯片一

江协科技STM32学习- P11 中断系统,EXTI外部中断

🚀write in front🚀   🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​  💬本系列哔哩哔哩江科大STM32的视频为主以及自己的总结梳理📚  🚀Projeet source code🚀    💾工程代码放在了本人的Gitee仓库:iPickCan (iPickCan

龙芯L2K0300开发板综合测试

CPU 查看cpu版本信息 cat /proc/cpuinfo 可以看到cpu是64位的LoongsonArch架构 stress压力测试结果 RAM 久久派板载512MB DDR4-2666内存,查看内存信息 cat /proc/meminfo 可以用memtester进行内存性能测试 memtester <size> <times> memtester测试结果

实操在聆思CSK6大模型开发板的英文评测SDK中自定义添加单词、短语、句子资源

引言 英文评测示例通过对用户语音输入的英文单词进行精准识别,提供 单词、短语、句子 三种类型,用户在选择好类型后,可根据屏幕上的提示进行语音输入,评测算法将对输入的英文语音进行精准识别,并对单词的发音、错读、漏读、多读等方面进行评估。 本文将详细介绍在聆思CSK6大模型语音视觉开发板上,如何替换英文评测示例中的单词、短语和句子,从而让您有更好的AI应用体验。 ·· 获取英文评测SDK 部

【免费分享】嵌入式Linux开发板【入门+项目,应用+底层】资料包一网打尽,附教程/视频/源码...

想要深入学习嵌入式Linux开发吗?现在机会来了!我们为初学者们准备了一份全面的资料包,包括原理图、教程、课件、视频、项目、源码等,所有资料全部免费领取,课程视频可试看(购买后看完整版),让你从零开始,快速掌握嵌入式Linux开发技能。 后台私信小雯老师,回复“嵌入式Linux”即可获取开发板完整资料包。 一、资料内容 开发教程:9大教程,覆盖应用层+底层开发 《Linux基础

AI-Talk开发板之helloword

一、说明         创建第一个应用在AI-Talk开发板上运行,编写一个“Hello World”应用,启动之后在主函数里通过UART0(debug)打印"Hello World"。 官方指导:第一个应用 | 聆思文档中心 (listenai.com) 二、创建工程 1、创建项目 在snap的同级目录下创建examples目录,然后进入examples目录,执行创建项目的命令: