立创·天空星开发板-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

相关文章

基于imx6ull开发板 移植opencv4.7.0

一、概述 本章节是针对opencv-4.7.0移植到Linux系统,运行在正点原子-I.MX6U ALPHA开发板 上,详细的移植流程如下。 二、环境要求 2.1 硬件环境 正点原子-I.MX6U ALPHA开发板虚拟机:VMware 2.2 软件环境 Ubuntu系统要求:20.04opencv版本: 4.7.0opencv贡献软件版本:4.x交叉工具链版本:gcc-linaro-6

linux内核开发板启动流程

声明:本文章是整理网上的资料和自己的理解 很早买了tiny6410开发板,内核使用配置好的,在内核Linux 2.6源码中包含了S3C6410 的驱动,最近想在自己的板子上移植Linux内核(内核源码没有中相关的配置),一直找不到思路,不知道Linux内核如何启动去配置相关的驱动的,在阅读内核启动的流程过程中(重点关注针对不同板子的驱动的加载流程,参考网上文章和博客),发现Linux的的板级的驱

移植SQLite到ARM开发板

最近在搞移植数据库到开发板,上网一搜都是sqlite ,所以就用这个吧,记录一下,特别简单, 首先要确保开发环境是好的,交叉编译器,NFS文件系统挂载等, 下载sqlite源码, http://www.sqlite.org/quickstart.html 拷贝到UBUTUN系统里,解压 tar -xzvf sqlite-autoconf-3080403.tar.gz 进入目录 cd

移植SDL2.0到嵌入式开发板过程

移植SDL2.0到210开发板,正在进行中,隔一段时间把文章写全,下面是调试中用的命令,每实验一次编译都得花10多分钟 实验平台:tiny210 要把SDL移植到开发板上显示图片或者支持事件响应,要先移植directfb库,而SDL2的源码文档里说了支持的directFB版本为1.1.0 1.2.x 和1.3.0,这里我选择的是1.2.7 directfb1.2.7,下载地址, htt

STM32 EXTI(外部中断)和NVIC(嵌套向量中断控制器)学习

STM32 EXTI(外部中断)和NVIC(嵌套向量中断控制器)学习 在STM32中EXTI有0~18个事件/中断,0~4各自都是单独的一个通道,5~9是共一个通道,10~15共享一个通道,16/17/18各自独立用到一个通道 在STM32中NVIC是嵌套向量中断控制器,分为0~4五个组,称之为(Group) NVIC_PriorityGroup_0 ~ NVIC_Priorit

20240621在飞凌的OK3588-C开发板linux系统的CAM3上接OV5645录像

20240621在飞凌的OK3588-C开发板linux系统的CAM3上接OV5645录像 2024/6/21 19:57 开发板:OK3588-C SDK:linux R4/Buildroot v4l2-ctl --list-devices v4l2-ctl --list-formats-ext -d /dev/video16 gst-launch-1.0 v4l2src device

开发板连接WiFi+开发板配置动态/静态IP

一、开发板连接WiFi 1、OTG线连接,使用adb进入开发板命令行。 2、使用下面指令来连接 wifi: connmanctl //进入 WIIF操作终端connmanctl> enable wifi //使能 WIFI 3、继续进入 connmanctl操作终端 connmanctl> scan wifi //开启 WIFI扫描,可以多次扫描connmanctl> scan wi

立创开源学习篇(一)

1.机壳地 外面包围的一圈是机壳地,和金属外壳相连与电路板的GND不相连:(大疆很多产品有此设计) 屏蔽和接地:通过在电路板周围打孔,并连接到机壳地,可以形成有效的电磁屏蔽层(形成金属铁笼)。这有助于减少电磁干扰(EMI),防止电路板上的电磁辐射对外界产生干扰,同时也防止外部电磁干扰影响电路板的正常工作。 散热:通过打孔与机壳连接,可以帮助散热,将电路板上的热量传导到机壳上,利用机壳的较大表

让linux2.6.24内核在开发板支持usb鼠标

Cited from http://blogold.chinaunix.net/u2/64681/showart_508931.html 今天下午,对以前移植的linux2.6.24内核不能检测USB鼠标进行了修改menuconfig,新内核的USB鼠标在内核 drivers/hid/usbhid目录下,文件名:usbmouse.c,如果你需要对鼠标驱动修改就看这个文件,我的开发板暂时不需要对

Python与Zynq沟通的桥梁,米尔PYNQ开发板资料分享

前言:PYNQ全称为Python Productivity for Zynq,即在Zynq全可编程ARM&FPGA融合处理架构的基础上,添加了对Python的支持。 PYNQ希望能够借助Python语言本身易用易学、扩展库多而全、社区活跃贡献度高等特性,有效降低Zynq嵌入式系统的开发门槛,并为人工智能,ADAS,机器视觉等高拓展性/高复杂度应用需求提供更好支撑。PYNQ将ARM处理器与FPGA