CH32Vx 之GPIO实验
CH32Vx 之GPIO实验
- 目录
- 如何使用外部中断
- GPIO如何使用
- Main函数
目录
配合中断以及开发板的按钮实现LED的开灭,涉及知识点中断以及GPIO控制
如何使用外部中断
根据手册知识了解得到:
- 所有GPIO都可以被配置外部中断输入通道 ,但是一个中断通道只能对应一个GPIO;
- CH32V307有16个GPIO外部中断输入通道,但是 中断函数仅有7个 ;
- 中断配置参考官方历程修改如下;
- 控制按钮对应的GPIO口为PB3,因此如下代码需要使能GPIOB,同时按钮是下降沿触发
void EXTI3_INT_INIT(void)
{GPIO_InitTypeDef GPIO_InitStructure = {0};EXTI_InitTypeDef EXTI_InitStructure = {0};NVIC_InitTypeDef NVIC_InitStructure = {0};RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;GPIO_Init(GPIOB, &GPIO_InitStructure);/* GPIOA ----> EXTI_Line0 */GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource3);EXTI_InitStructure.EXTI_Line = EXTI_Line3;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);
}
GPIO如何使用
根据官方例程. 我的开发板控制LED的GPIO口对应PA15
void GPIO_Toggle_INIT(void)
{GPIO_InitTypeDef GPIO_InitStructure = {0};RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);
}
Main函数
int main(void)
{NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);Delay_Init();USART_Printf_Init(115200);GPIO_Toggle_INIT();EXTI3_INT_INIT();while(1);
}
定义外部中断函数入口:
PB3 对应 EXIT3
void EXTI3_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
volatile uint16_t LED_Status = 0; // 中断里使用的变量加 volatile 可当成全局变量
void EXTI3_IRQHandler(void)
{EXTI_ClearITPendingBit(EXTI_Line3); /* Clear Flag */LED_Status = !LED_Status;GPIO_WriteBit(GPIOA, GPIO_Pin_15, LED_Status);
}
CH32Vx 之GPIO实验相关推荐
- 从51到ARM裸机开发实验(006)Exynos4412 GPIO实验
本次实验基于Tiny4412开发板,开发板上有四个可编程控制的LED.四个按键.来实现这样一种场景:每个按键控制一盏LED,每按一次则对应的LED状态发生改变,按一次开灯,再按一次关灯.核心控制为三星 ...
- GPIO实验(lv9-day12)
文章目录 GPIO实验(lv9-day12) 1 GPIO简介 2 LED实验步骤 2.1 通过电路原理图分析LED的控制逻辑 2.2 通过电路原理图查找LED与Exynos4412的连接关系 2.3 ...
- GPIO实验之c语言
上一章节进行实验使用的是汇编进行编程的,本次实验是使用c语言进行编写的. (1)点亮一个led灯 1)启动文件: crt.S .text .global _start _star ...
- 从51到ARM裸机开发实验(003) AT89C51 GPIO实验
所谓GPIO,就是通用型输入输出(General Purpose Input/Output),GPIO试验是单片机引脚的基本输入输出功能.现在来实现这样一个场景:四个按键作为开关.四个LED作为响应, ...
- 基于Atmega16的GPIO实验(以流水灯为例)
一.实验目的 1. 掌握AVR单片机开发平台的搭建方法. 2. 掌握GPIO的编程方法. 二.实验内容 1. 验证课堂例题 编译下载运行课堂例题--"LED流水灯"和"按 ...
- lpc1768的gpio库函数_Cortex-M3学习LPC1768 - GPIO实验
/********************************************************************************* 文件名称:mian.c 功 ...
- JZ2440开发板之GPIO实验,遇到的链接语句、设置寄存器的问题
(1)自己写的 crt0.s , led.c , Makefile 文件,下到开发板上后始终无法运行,但是将led.c文件拷贝到光盘提供的对应程序中编译,结果可以运行.推测是 crt0.s 或者 Ma ...
- lpc1768的gpio库函数_LPC1768之GPIO流水灯的实验例程
**************************************** Copyright (c) CaKen ************************************ ** ...
- DSP5509的GPIO学习-第5篇
1. 使用CCS V6.1版本,目前已经不局限于仅仅把实验搞清楚了,要深入去探究内部的原理,本章看下GPIO实验 2. 在CCS启动的时候,提示,这个问题是什么,XDAIS是什么?XDAIS (eXp ...
最新文章
- Python 爬取图片链接并且解析
- xp 安装mysql数据库_Windows XP系统中安装MySQL5.5.28数据库图文教程
- ajax.beginform onfailure,如何使用Ajax.BeginForm OnSuccess和OnFailure方法?
- 【laravel】开发过程中会遇到的问题
- jsp里面编写java代码注意加双引号
- 图书推荐(持续更新)
- Android---------------Handler的学习
- 大牛精心挑选的25个Visual Basic学习资料汇总
- C# WinForm 开软件窗口居中 任意时刻窗体居中
- MyBatis源码阅读(十二) --- Spring加载MyBatis过程
- mix2线刷开发板救砖_小米MIX2原版固件刷机包下载_小米MIX2线刷官方系统升级包...
- 单点登录 cas 设置回调地址_单点登录————CAS
- 17-什么是资源服务器
- 格林威克GEWK:skf轴承的清洁,维护和损坏的判断标准
- vb wps 链接单元格_wps如何超链接wps表格.doc
- 计算机的硬盘 u盘启动,设置U盘启动和硬盘启动两种差别教程步骤
- 华为云城市峰会深圳站 · 华为云区块链助力金融创新
- 安森美为何「上热搜」?汽车业务增量背后的隐忧已经出现
- 获取每日一句,每天发给女朋友。
- 【挖矿木马】记一次被挖矿木马攻击的过程(Redis被攻击)
热门文章
- 基于微信小程序云开(统计学生信息并导出excel)4.0版(稳定版)
- 下载spotify音乐_如何在Amazon Echo上播放Spotify音乐
- 光场(Light Field)原理
- 单项选择题 安卓课程设计_单项选择题标准化考试系统课程设计论文.doc
- 利用Excel批量重命名当前目录下的文件
- 福建力得温控器_福建力得干式变压器温度控制器LD-B10-10FP(B)
- a=b++和a=++b的区别
- 室内设计学习哪些课程和软件?
- 基于Golang TCP 开发网络游戏 CLI四川麻将 - 3. 使用grom进行Mysql存储数据
- 精选优美英文短文2——Here's to the Crazy Ones(致疯狂的人)