CH32Vx 之GPIO实验

  • 目录
    • 如何使用外部中断
    • GPIO如何使用
    • Main函数

目录

配合中断以及开发板的按钮实现LED的开灭,涉及知识点中断以及GPIO控制

如何使用外部中断

根据手册知识了解得到:

  1. 所有GPIO都可以被配置外部中断输入通道 ,但是一个中断通道只能对应一个GPIO;
  2. CH32V307有16个GPIO外部中断输入通道,但是 中断函数仅有7个
  3. 中断配置参考官方历程修改如下;
  4. 控制按钮对应的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实验相关推荐

  1. 从51到ARM裸机开发实验(006)Exynos4412 GPIO实验

    本次实验基于Tiny4412开发板,开发板上有四个可编程控制的LED.四个按键.来实现这样一种场景:每个按键控制一盏LED,每按一次则对应的LED状态发生改变,按一次开灯,再按一次关灯.核心控制为三星 ...

  2. GPIO实验(lv9-day12)

    文章目录 GPIO实验(lv9-day12) 1 GPIO简介 2 LED实验步骤 2.1 通过电路原理图分析LED的控制逻辑 2.2 通过电路原理图查找LED与Exynos4412的连接关系 2.3 ...

  3. GPIO实验之c语言

    上一章节进行实验使用的是汇编进行编程的,本次实验是使用c语言进行编写的. (1)点亮一个led灯   1)启动文件:    crt.S   .text   .global _start   _star ...

  4. 从51到ARM裸机开发实验(003) AT89C51 GPIO实验

    所谓GPIO,就是通用型输入输出(General Purpose Input/Output),GPIO试验是单片机引脚的基本输入输出功能.现在来实现这样一个场景:四个按键作为开关.四个LED作为响应, ...

  5. 基于Atmega16的GPIO实验(以流水灯为例)

    一.实验目的 1. 掌握AVR单片机开发平台的搭建方法. 2. 掌握GPIO的编程方法. 二.实验内容 1. 验证课堂例题 编译下载运行课堂例题--"LED流水灯"和"按 ...

  6. lpc1768的gpio库函数_Cortex-M3学习LPC1768 - GPIO实验

    /********************************************************************************* 文件名称:mian.c 功    ...

  7. JZ2440开发板之GPIO实验,遇到的链接语句、设置寄存器的问题

    (1)自己写的 crt0.s , led.c , Makefile 文件,下到开发板上后始终无法运行,但是将led.c文件拷贝到光盘提供的对应程序中编译,结果可以运行.推测是 crt0.s 或者 Ma ...

  8. lpc1768的gpio库函数_LPC1768之GPIO流水灯的实验例程

    **************************************** Copyright (c) CaKen ************************************ ** ...

  9. DSP5509的GPIO学习-第5篇

    1. 使用CCS V6.1版本,目前已经不局限于仅仅把实验搞清楚了,要深入去探究内部的原理,本章看下GPIO实验 2. 在CCS启动的时候,提示,这个问题是什么,XDAIS是什么?XDAIS (eXp ...

最新文章

  1. Python 爬取图片链接并且解析
  2. xp 安装mysql数据库_Windows XP系统中安装MySQL5.5.28数据库图文教程
  3. ajax.beginform onfailure,如何使用Ajax.BeginForm OnSuccess和OnFailure方法?
  4. 【laravel】开发过程中会遇到的问题
  5. jsp里面编写java代码注意加双引号
  6. 图书推荐(持续更新)
  7. Android---------------Handler的学习
  8. 大牛精心挑选的25个Visual Basic学习资料汇总
  9. C# WinForm 开软件窗口居中 任意时刻窗体居中
  10. MyBatis源码阅读(十二) --- Spring加载MyBatis过程
  11. mix2线刷开发板救砖_小米MIX2原版固件刷机包下载_小米MIX2线刷官方系统升级包...
  12. 单点登录 cas 设置回调地址_单点登录————CAS
  13. 17-什么是资源服务器
  14. 格林威克GEWK:skf轴承的清洁,维护和损坏的判断标准
  15. vb wps 链接单元格_wps如何超链接wps表格.doc
  16. 计算机的硬盘 u盘启动,设置U盘启动和硬盘启动两种差别教程步骤
  17. 华为云城市峰会深圳站 · 华为云区块链助力金融创新
  18. 安森美为何「上热搜」?汽车业务增量背后的隐忧已经出现
  19. 获取每日一句,每天发给女朋友。
  20. 【挖矿木马】记一次被挖矿木马攻击的过程(Redis被攻击)

热门文章

  1. 基于微信小程序云开(统计学生信息并导出excel)4.0版(稳定版)
  2. 下载spotify音乐_如何在Amazon Echo上播放Spotify音乐
  3. 光场(Light Field)原理
  4. 单项选择题 安卓课程设计_单项选择题标准化考试系统课程设计论文.doc
  5. 利用Excel批量重命名当前目录下的文件
  6. 福建力得温控器_福建力得干式变压器温度控制器LD-B10-10FP(B)
  7. a=b++和a=++b的区别
  8. 室内设计学习哪些课程和软件?
  9. 基于Golang TCP 开发网络游戏 CLI四川麻将 - 3. 使用grom进行Mysql存储数据
  10. 精选优美英文短文2——Here's to the Crazy Ones(致疯狂的人)