PY32F003F18按键输入

一、PY32F003F18的GPIO介绍
1、PY32F003F18的18个I/O,均可作为外部中断;
2、每个GPIO都可以由软件配置为输出:
1)、推挽输出(push-pull)
2)、开漏极输出(open drain)
注意:驱动电流为8mA;
3、每个GPIO都可以由软件配置为输入:
1)、浮空输入(floating)
2)、上拉输入(pull-up)
3)、下拉输入(pull-down)
4)、模拟输入(analog)
4、每个GPIO都可以由软件配置为外设复用功能;
5、Debug引脚默认被置于复用功能上拉或下拉模式:
PA14默认为SWCLK: 置于下拉模式
PA13默认为SWDIO: 置于上拉模式
PF4默认为Boot:Boot引脚默认置于输入下拉模式

二、GPIO输入输出的用户函数
1、__HAL_RCC_GPIOA_CLK_ENABLE();//使能GPIOA时钟
2、__HAL_RCC_GPIOB_CLK_ENABLE();//使能GPIOB时钟
3、__HAL_RCC_GPIOF_CLK_ENABLE();//使能GPIOF时钟
4、HAL_GPIO_Init(GPIO_TypeDef ?*GPIOx, GPIO_InitTypeDef *GPIO_Init);
根据GPIO_InitTypeDef型结构变量初始化GPIOx端口
5、HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
将GPIOx端口的第GPIO_Pin引脚设置输出电平值为PinState
6、HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
将GPIOx端口的第GPIO_Pin引脚设置输出为反向电平,即输出电平翻转
7、HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
读取"GPIOx端口的第GPIO_Pin引脚"输入的电平值

三、测试程序

#include "Key.h"
#include "py32f0xx_hal.h"void Key1_Init(void);//函数功能:Key1引脚初始化
void Key1_Init(void)
{GPIO_InitTypeDef GPIO_InitStructureure;__HAL_RCC_GPIOA_CLK_ENABLE();  //GPIOA时钟使能GPIO_InitStructureure.Pin = GPIO_PIN_12;       //选择第12脚GPIO_InitStructureure.Pull = GPIO_NOPULL;      //引脚上拉和下拉都没有被激活GPIO_InitStructureure.Speed = GPIO_SPEED_FREQ_MEDIUM;//配置GPIO速度为中速GPIO_InitStructureure.Mode = GPIO_MODE_INPUT;//设置引脚工作模式为输入浮空模式HAL_GPIO_Init(GPIOA,&GPIO_InitStructureure);//根据GPIO_InitStructureure结构变量指定的参数初始化GPIOA的外设寄存器
}
#include "LED.h"void MCU_LED_Init(void);//函数功能:MCU_LED灯引脚初始化,并配置为关灯
void MCU_LED_Init(void)
{GPIO_InitTypeDef  GPIO_InitStructure;__HAL_RCC_GPIOB_CLK_ENABLE();//使能GPIOB时钟//初始化GPIOB5GPIO_InitStructure.Pin = GPIO_PIN_5;                  //选择第5脚GPIO_InitStructure.Pull = GPIO_PULLUP;                //引脚上拉被激活GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_VERY_HIGH; //配置GPIO速度为极高GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;        //设置引脚工作模式为推挽输出方式HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);//根据GPIO_InitStructure结构变量指定的参数初始化GPIOB的外设寄存器MCU_LED_Off();
}
#ifndef __LED_H
#define __LED_H#include "py32f0xx_hal.h"#define MCU_LED_On()      HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET)  //输出低电平开灯
#define MCU_LED_Off()     HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET)    //输出高电平关灯
#define MCU_LED_Toggle()  HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5)                //输出电平翻转extern void MCU_LED_Init(void);#endif /* __LED_H */
#include "delay.h"static uint8_t  fac_us=0; //us延时倍乘数void delay_init(void);
void delay_us(uint32_t nus);
void delay_ms(uint32_t nms);//函数功能:配置"SysTick定时器"每1ms中断一次,优先级为最低
void delay_init(void)
{fac_us=SystemCoreClock/1000000;//不论是否使用OS,fac_us都需要使用uwTickFreq=HAL_TICK_FREQ_1KHZ;//准备配置"SysTick定时器"每1ms中断一次//HAL_TICK_FREQ_10HZ= 100,"SysTick计数器"的中断周期为100ms//HAL_TICK_FREQ_100HZ= 10,"SysTick计数器"的中断周期为10ms//HAL_TICK_FREQ_1KHZ = 1,"SysTick计数器"的中断周期为1msHAL_InitTick(PRIORITY_LOWEST);//配置"SysTick定时器"每1ms中断一次,优先级为最低
//	HAL_Init();//配置"SysTick定时器"每1ms中断一次,优先级为最低HAL_SetTickFreq(uwTickFreq);//设置"SysTick滴答定时器"的中断周期为uwTickFreq个毫秒
}//函数功能:延时nus
//nus:要延时的us数.	
//nus:0~204522252(最大值即2^32/fac_us)	    								   
void delay_us(uint32_t nus)
{		uint32_t ticks;uint32_t told,tnow,tcnt=0;uint32_t reload=SysTick->LOAD;//读取"SysTick定时器"自动重装载值ticks=nus*fac_us; 						//需要的节拍数 told=SysTick->VAL;        	  //读取"系统滴答定时器的计数值"while(1){tnow=SysTick->VAL;//读取"系统滴答定时器的计数值"	if(tnow!=told){	    if(tnow<told)tcnt+=told-tnow;	//这里注意一下SYSTICK是一个递减的计数器就可以了.else tcnt+=reload-tnow+told;	    told=tnow;if(tcnt>=ticks)break;			//时间超过/等于要延迟的时间,则退出.}		}										    
}//函数功能:延时nms
//nms:要延时的ms数
//nms:0~65535
void delay_ms(uint32_t nms)
{	delay_us((uint32_t)(nms*1000));//普通方式延时
}//HAL库接口函数
//HAL_Delay(x)延时x毫秒,x<0xFFFFFFFF,至少需要延时一个周期
//HAL_SuspendTick();不使能"SysTick滴答定时器"中断
//HAL_ResumeTick();使能"SysTick滴答定时器"中断
//HAL_GetTickFreq();读取"SysTick滴答定时器"的中断频率
//HAL_SetTickFreq(Freq);设置"SysTick滴答定时器"的中断频率为Freq
//HAL_GetTickPrio();读取"SysTick滴答定时器"的中断优先级
//HAL_GetTick();读取"SysTick滴答定时器"的中断次数计数器uwTick
//HAL_IncTick();供SysTick_Handler()调用
//uwTickFreq=HAL_TICK_FREQ_1KHZ;//准备配置"SysTick定时器"每1ms中断一次
//HAL_InitTick(PRIORITY_LOWEST);//配置"SysTick定时器"每1ms中断一次,优先级为最低
#include "py32f0xx_hal.h"
#include "delay.h"
#include "Key.h"
#include "LED.h"/*
PY32F003F18的18个I/O,均可作为外部中断
每个GPIO都可以由软件配置为输出:推挽输出(push-pull),开漏极输出(open drain);注意:驱动电流为8mA;
每个GPIO都可以由软件配置为输入:浮空输入(floating),上拉输入(pull-up),下拉输入(pull-down),模拟输入(analog);
每个GPIO都可以由软件配置为外设复用功能;Debug引脚默认被置于复用功能上拉或下拉模式:
PA14默认为SWCLK: 置于下拉模式
PA13默认为SWDIO: 置于上拉模式
PF4默认为Boot:Boot引脚默认置于输入下拉模式
*/void Delay_ms(uint32_t x_ms);int main(void)
{
//	HSE_Config();//初始化"HSI,HSE,LSI振荡器",HSE用作系统时钟(SYSCLK),同时配置"AHB时钟(HCLK)和APB时钟(PCLK)"delay_init();Key1_Init();//Key1引脚初始化MCU_LED_Init();//MCU_LED灯引脚初始化,并配置为关灯HAL_Delay(1000);while (1){if( Key1_LevelValue() ) MCU_LED_Off();else MCU_LED_On();delay_ms(500);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/124378.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言初阶指针

目录 何为指针 地址大小 野指针 成因 如何规避 有效性 指针计算 -整数 ​编辑 指针比较运算 指针-指针 ​编辑 数组与指针关系 二级指针 指针数组 应用 何为指针 指针就是指针变量&#xff0c;用来存放内存空间的一个编号&#xff0c;将指针比作我们宾馆的客人&a…

前端 JS 经典:上传文件

重点&#xff1a;multipart/form-data 后端识别上传类型必填 1. form 表单上传 <!-- enctype"multipart/form-data" 这个必填 --> <form action"http://127.0.0.1:8080/users/avatar" method"post" enctype"multipart/form-data…

软件工程课件

软件工程 考点概述软件工程概述能力成度模型能力成熟度模型集成软件过程模型逆向工程![ ](https://img-blog.csdnimg.cn/425cea8190fb4c5ab2bf7be5e2ad990e.png) 考点概述 重点章节 软件工程概述 之前老版教程的&#xff0c;之前考过 能力成度模型 记忆 能力等级 和 特点 能力…

最强的AI视频去码图片修复模型:CodeFormer

目录 1 CodeFormer介绍 1.1 CodeFormer解决的问题 1.2 人脸复原的挑战 1.3 方法动机 1.4 模型实现 1.5 实验结果 2 CodeFormer部署与运行 2.1 conda环境安装 2.2 运行环境构建 2.3 模型下载 2.4 运行 2.4.1 人脸复原 ​编辑​编辑 2.4.2 全图片增强 2.4.3 人脸颜色…

linux-进程-execl族函数

exec函数的作用&#xff1a; 我们用fork函数创建新进程后&#xff0c;经常会在新进程中调用exec函数去执行另外一个程序。当进程调用exec函数时&#xff0c;该进程被完全替换为新程序。因为调用exec函数并不创建新进程&#xff0c;所以前后进程的ID并没有改变。 简单来说就是&…

ESP32用作经典蓝牙串口透传模块与手机进行串口通信

ESP32用作经典蓝牙串口透传模块与手机进行串口通信 简介ESP32开发板Arduino程序手机与ESP32开发板进行蓝牙串口透传通信总结 简介 ESP32-WROOM-32模组集成了双模蓝牙包括传统蓝牙&#xff08;BR/EDR&#xff09;、低功耗蓝牙&#xff08;BLE&#xff09;和 Wi-Fi&#xff0c;具…

使用Caffeine实现帖子的缓存来优化网站的运行速度

导入依赖 <!-- https://mvnrepository.com/artifact/com.github.ben-manes.caffeine/caffeine --><dependency><groupId>com.github.ben-manes.caffeine</groupId><artifactId>caffeine</artifactId><version>3.1.7</version>…

stride与padding对输出尺寸的计算

公式&#xff1a; 练习&#xff1a; 图1&#xff1a; input4&#xff0c;filter3&#xff0c;padding0&#xff0c;stride1 output2 图2&#xff1a; input5&#xff0c;filter3&#xff0c;padding0&#xff0c;stride2 output2 图3&#xff1a; input6&#xff0c;filter3&am…

二、创建个人首页页面

简介 改造 App.vue 创建一个展示页面,实现一个可以轮播的功能效果。欢迎访问个人的简历网站预览效果 本章涉及修改与新增的文件:style.css、App.vue、assets 一、 自定义全局样式 将 style.css 中的文件样式内容替换为如下代码 /* 初始化样式 --------------------------…

Postern配置HTTP和HTTPS的步骤

Postern是一款强大的Android代理工具&#xff0c;它允许您在设备上配置全局代理来实现安全、隐私保护和自由上网。本文将详细介绍如何使用Postern在Android设备上配置HTTP和HTTPS代理&#xff0c;为您提供更便捷的上网体验。 步骤1&#xff1a;下载和安装Postern应用 首先&am…

原生Js Canvas去除视频绿幕背景

Js去除视频背景 注&#xff1a; 这里的去除视频背景并不是对视频文件进行操作去除背景 如果需要对视频扣除背景并导出可以使用ffmpeg等库&#xff0c;这里仅作播放用所以采用这种方法 由于uniapp中的canvas经过封装&#xff0c;且 uniapp 的 drawImage 无法绘制视频帧画面&…

《基于区块链的数据资产评估实施指南》技术研讨会成功召开

2023年9月1日&#xff0c;《基于区块链的数据资产评估实施指南》&#xff08;以下简称《指南》&#xff09;技术研讨会在深圳召开&#xff0c;竹云科技作为主要参编单位出席此次研讨会。 中国科协决策咨询首席专家王春晖&#xff0c;中国社会科学院博士于小丽&#xff0c;中国…

无swing,高级javaSE毕业之贪吃蛇游戏(含模块构建,多线程监听服务)

JavaSE&#xff0c;无框架实现贪吃蛇 文章目录 JavaSE&#xff0c;无框架实现贪吃蛇1.整体思考2.可能的难点思考2.1 如何表示游戏界面2.2 如何渲染游戏界面2.3 如何让游戏动起来2.4 蛇如何移动 3.流程图制作4.模块划分5.模块完善5.0常量优化5.1监听键盘服务i.输入存储ii.键盘监…

Lumion 和 Enscape 应该选择怎样的笔记本电脑?

Lumion 和 Enscape实时渲染对配置要求高&#xff0c;本地配置不够&#xff0c;如何快速解决&#xff1a; 本地普通电脑可一键申请高性能工作站&#xff0c;资产安全保障&#xff0c;供软件中心&#xff0c;各种软件插件一键获取&#xff0c;且即开即用&#xff0c;使用灵活&am…

时序预测 | MATLAB实现CNN-LSTM卷积长短期记忆神经网络时间序列预测(风电功率预测)

时序预测 | MATLAB实现CNN-LSTM卷积长短期记忆神经网络时间序列预测&#xff08;风电功率预测&#xff09; 目录 时序预测 | MATLAB实现CNN-LSTM卷积长短期记忆神经网络时间序列预测&#xff08;风电功率预测&#xff09;预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1…

知识蒸馏学习

知识蒸馏----教师和学生模型&#xff1a;将已训练完善的模型作为教师模型&#xff0c;通过控制“温度”从模型的输出结果中“蒸馏”出“知识”用于学生模型的训练&#xff0c;并希望轻量级的学生模型能够学到教师模型的“知识”&#xff0c;达到和教师模型相同的表现。 本质上属…

无需公网IP,实现外网远程访问管家婆ERP进销存系统的方法

文章目录 前言 1.管家婆服务2. 内网穿透2.1 安装cpolar内网穿透2.2 设置远程访问 3. 固定访问地址4. 配置固定公网访问地址 前言 管家婆辉煌系列产品是中小企业进销存、财务管理一体化的典范软件&#xff0c;历经十余年市场的洗礼&#xff0c;深受广大中小企业的欢迎&#xff…

【2023高教社杯数学建模国赛】ABCD题 问题分析、模型建立、参考文献及实现代码

【2023高教社杯数学建模国赛】ABCD题 问题分析、模型建立、参考文献及实现代码 1 比赛时间 北京时间&#xff1a;2023年9月7日 18:00-2023年9月10日20:00 2 思路内容 可以参考我提供的历史竞赛信息内容&#xff0c;最新更新我会发布在博客和知乎上&#xff0c;请关注我获得最…

1、Flutter移动端App实战教程【环境配置、模拟器配置】

一、概述 Flutter是Google用以帮助开发者在IOS和Android 两个平台开发高质量原生UI的移动SDK&#xff0c;一份代码可以同时生成IOS和Android两个高性能、高保真的应用程序。 二、渲染机制 之所以说Flutter能够达到可以媲美甚至超越原生的体验&#xff0c;主要在于其拥有高性…

GeoNet: Unsupervised Learning of Dense Depth, Optical Flow and Camera Pose 论文阅读

论文信息 题目&#xff1a;GeoNet: Unsupervised Learning of Dense Depth, Optical Flow and Camera Pose 作者&#xff1a;Zhichao Yin and Jianping Shi 来源&#xff1a;CVPR 时间&#xff1a;2018 Abstract 我们提出了 GeoNet&#xff0c;这是一种联合无监督学习框架&a…