GPIO输出速度(ARM-GD32)

 单片机输出速度对GPIO硬件的影响

如果T为100ns 那么2/3*100ns = 67ns 那么tr + tf = 38 ns (也就是不能超过32ns)

tr 和tf和什么东西有关如何去控制

CL 是一个电容,电容会改变和影响电压变化的速率,输出高低电平也就是对电容进行充电和放电根据上图电容充电的公式DV / DT 电压变化的速率:因此在负载电容一定的情况下,电压变化的速率越快,需要的电流l越大,单片机的功耗越高。

注:

在决定使用多频率时遵循够用原则,尽可能的节省MCU资源

输出交流特性参数

基于hal库的方式驱动点亮发光二级管

嵌入式通用软件架构框图

GD32F303固件库

使用hal库的方式点亮led灯

创建一个项目:在项目下创建4个文件夹,同时在项目的文件路径下创建4个相同的文件夹

拷贝ARM内核文件


在项目中添加文件

添加ARM内核相关文件

配置完成后结果展示

keil配置

 路径的添加在c或者c++的选项卡中

创建c文件main.c

 


 led灯闪烁实验

配置hal库函数实现led灯的亮灭(与标准库差不多)

注:查看函数定义的方式有两种

1:一种是直接查看官方给出的参考手册,

2:一种是在keil软件的内部直接查看提供的头文件和c语言文件,我这里推荐两种方式结合使用

 本次实验使用到的库函数

void rcu_deinit(void);
/* enable the peripherals clock */
void rcu_periph_clock_enable(rcu_periph_enum periph);
/* disable the peripherals clock */
void rcu_periph_clock_disable(rcu_periph_enum periph);
/* enable the peripherals clock when sleep mode */
void rcu_periph_clock_sleep_enable(rcu_periph_sleep_enum periph);
/* disable the peripherals clock when sleep mode */
void rcu_periph_clock_sleep_disable(rcu_periph_sleep_enum periph);
/* reset GPIO port */
void gpio_deinit(uint32_t gpio_periph);
/* reset alternate function I/O(AFIO) */
void gpio_afio_deinit(void);
/* GPIO parameter initialization */
void gpio_init(uint32_t gpio_periph, uint32_t mode, uint32_t speed, uint32_t pin);/* set GPIO pin bit */
void gpio_bit_set(uint32_t gpio_periph, uint32_t pin);
/* reset GPIO pin bit */
void gpio_bit_reset(uint32_t gpio_periph, uint32_t pin);
/* write data to the specified GPIO pin */
void gpio_bit_write(uint32_t gpio_periph, uint32_t pin, bit_status bit_value);
/* write data to the specified GPIO port */
void gpio_port_write(uint32_t gpio_periph, uint16_t data);

led灯点亮函数

#include <stdint.h>
#include "gd32f30x.h"
/*1:  rcc 外设时钟控制2: 初始化引脚
*/static void Delay(uint32_t count)
{while (count--);
}int main(void)
{// rcu 初始化GPIO时钟,这里初始化的是GPIOA的时钟rcu_periph_clock_enable(RCU_GPIOA);// 初始化GPIO通用输入输出引脚gpio_init( GPIOA, GPIO_MODE_OUT_PP, GPIO_OSPEED_2MHZ, GPIO_PIN_8);// 第一个参数表示哪一个GPIO口// 第二个参数表示使用哪一种模式// 第三个参数表示时钟频率// 第四个参数表示使用的是哪一个引脚while(1){// 设置引脚电平gpio_bit_set(GPIOA, GPIO_PIN_8); Delay(1000000);gpio_bit_reset(GPIOA, GPIO_PIN_8);Delay(1000000);//		    // gpio_bit_set可以也可以输出引脚电平
//		    gpio_bit_write(GPIOA, GPIO_PIN_8, SET);
//		    Delay(1000000);
//			gpio_bit_write(GPIOA, GPIO_PIN_8, RESET);
//		    Delay(1000000);}	
}

按键控制实验

相关库函数

/* get GPIO pin input status */
FlagStatus gpio_input_bit_get(uint32_t gpio_periph, uint32_t pin);
/* get GPIO port input status */
uint16_t gpio_input_port_get(uint32_t gpio_periph);
/* get GPIO pin output status */
FlagStatus gpio_output_bit_get(uint32_t gpio_periph, uint32_t pin);
/* get GPIO port output status */
uint16_t gpio_output_port_get(uint32_t gpio_periph);
/* configure GPIO pin remap */
void gpio_pin_remap_config(uint32_t remap, ControlStatus newvalue);

 按键按下时点亮led灯

#include <stdint.h>
#include "gd32f30x.h"
/*1:  rcc 外设时钟控制2: 初始化引脚
*/static void Delay(uint32_t count)
{while (count--);
}int main(void)
{// rcu 初始化GPIO时钟,这里初始化的是GPIOA的时钟rcu_periph_clock_enable(RCU_GPIOA);// 初始化GPIO通用输入输出引脚gpio_init( GPIOA, GPIO_MODE_OUT_PP, GPIO_OSPEED_2MHZ, GPIO_PIN_8);// 第一个参数表示哪一个GPIO口// 第二个参数表示使用哪一种模式// 第三个参数表示时钟频率// 第四个参数表示使用的是哪一个引脚while(1){// 获取GPIO引脚的输入值,如果输入值为0表示按键按下,程序点亮led灯while(gpio_input_bit_get(GPIOA,GPIO_PIN_0) == 0){gpio_bit_write(GPIOA,GPIO_PIN_8,SET);}gpio_bit_write(GPIOA,GPIO_PIN_8,RESET);}	
}

......

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

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

相关文章

【噪声学习】SELFIE:更新不干净样本的鲁棒性深度学习

SELFIE: Refurbishing Unclean Samples for Robust Deep Learning 摘要: 由于深度神经网络具有极高的表达能力,其副作用是即使在标签噪声极高的情况下也能完全记住训练数据。为了克服对噪声标签的过度拟合,我们提出了一种名为 SELFIE 的新型鲁棒训练方法。我们的主要想法是…

Python GUI开发- PyQt5 开发小工具环境入门

前言 常见的python开发gui的库有 Tkinter&#xff0c; PyQt5&#xff0c; wxPython等。本教程是选择PyQt5 开发桌面小工具。 环境准备 只需pip安装即可快速准备好开发环境 pip install pyqt5快速开始 创建一个空的window窗口 Qapplication()&#xff1a;每个GUI都必须包含…

【Linux】:文本编辑与输出命令 轻松上手nano、echo和cat

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; Linux深造日志 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一、nano1.1 打开文件&#xff1a;1.2 常用快捷键&#xff1a;1.3 其他功能&#xff…

读人工智能时代与人类未来笔记03_演变

1. 演变 1.1. 每个社会都找到了属于自己的一套适应世界的方法 1.1.1. 适应的核心&#xff0c;是有关人类心智与现实之间关系的概念 1.1.2. 人类认识周围环境的能力 1.1.2.1. 这种能力通过知识获得&#xff0c;同时也受到知识…

【渲染数学-01】如何模拟静态流(上)

文章目录 一、说明二、摘要三、简介四、稳定的纳维-斯托克斯4.1 基本方程4.2 解决方法 一、说明 关于流体物质的仿真和模拟&#xff0c;需要流体理论方面的一般知识。我们这里从基本流体方程入手&#xff0c;详细解释如何实现流体仿真的每一个具体步骤。 二、摘要 构建类似流体…

详解pytorch中循环神经网络(RNN、LSTM、GRU)的维度

详解pytorch中循环神经网络&#xff08;RNN、LSTM、GRU&#xff09;的维度 RNNtorch.nn.rnn详解RNN输入输出维度 LSTMtorch.nn.LSTM详解LSTM输入输出维度 GRUtorch.nn.GRU详解GRU输入输出维度 三种RNN的示例 首先如果你对RNN、LSTM、GRU不太熟悉&#xff0c;可点击查看。 RNN …

python数据可视化:层次聚类热图clustermap()

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 python数据可视化&#xff1a; 层次聚类热图 clustermap() [太阳]选择题 请问关于以下代码表述错误的选项是&#xff1f; import seaborn as sns import matplotlib.pyplot as plt import n…

代码随想录—— 填充每个节点的下一个右侧节点指针(Leetcode116)

题目链接 层序遍历 /* // Definition for a Node. class Node {public int val;public Node left;public Node right;public Node next;public Node() {}public Node(int _val) {val _val;}public Node(int _val, Node _left, Node _right, Node _next) {val _val;left _…

开源的全自动生成视频文案、视频素材、视频字幕、视频背景音乐的AI项目

网址 https://github.com/harry0703/MoneyPrinterTurbo 只需提供一个视频 主题 或 关键词 &#xff0c;就可以全自动生成视频文案、视频素材、视频字幕、视频背景音乐&#xff0c;然后合成一个高清的短视频。 如果用来做视频&#xff0c;可以先收藏一下&#xff0c;值得本地…

51 单片机[2-1]:点亮一个LED

一、在 Keil5 中新建项目 打开 Keil5 &#xff0c;点击 Project —— new μVision Project 新建文件夹 KeilProject &#xff0c;以后的项目都在这个文件夹下&#xff0c;再建一个文件夹 2-1 点亮一个LED。在该文件夹下创建名为 Project 的文件&#xff0c;并保存。推荐起这…

Spring Boot:异常处理

Spring Boot 前言使用自定义错误页面处理异常使用 ExceptionHandler 注解处理异常使用 ControllerAdvice 注解处理异常使用配置类处理异常使用自定义类处理异常 前言 在 Spring Boot 中&#xff0c;异常处理是一个重要的部分&#xff0c;可以允许开发者优雅地处理应用程序中可…

复利效应(应用于成长)

应用 每个人在智力、知识、经验上&#xff0c;复利效应都一样&#xff0c;只要能积累的东西&#xff0c;基本上最终都会产生复利效应。 再来看一下复利公式&#xff1a;FP*(1i)^n P本金&#xff1b;i利率&#xff1b;n持有期限。在使用时&#xff0c;一定要注意4个限定条件&a…

AI图书推荐:ChatGPT等生成式AI在高等教育中的应用

自2022年11月以来&#xff0c;ChatGPT及其在高等教育各个层面的影响已成为所有教育对话的核心内容。Chan和Colloton所著的书籍是首批全面探讨ChatGPT与生成式人工智能&#xff08;GenAI&#xff09;在高等教育中应用及影响的作品之一。 该书深入研究了针对专业环境定制的AI素养…

基础学习-Git(分布式版本控制系统)

学习视频推荐 http://【黑马程序员Git全套教程&#xff0c;完整的git项目管理工具教程&#xff0c;一套精通git】 https://www.bilibili.com/video/BV1MU4y1Y7h5/?p5&share_sourcecopy_web&vd_source2b85bd9be9213709642d908906c3d863 1、Git环境配置 安装Git Git下…

wireshark_概念

ARP (Address Resolution Protocol&#xff09;协议&#xff0c;即地址解析协议。该协议的功能就是将IP地址解析成MAC地址。 混杂模式 抓取经过网卡的所有数据包&#xff0c;包括发往本网卡和非发往本网卡的。 非混杂模式 只抓取目标地址是本网卡的数据包&#xff0c;对于发往…

《控制系统实验与综合设计》综合四至六(含程序和题目)

1.电机模型辨识实验 1.1 实验目的 &#xff08;1&#xff09;掌握一阶系统阶跃响应的特点&#xff0c;通过实验加深对直流电解模型的理解&#xff1b; &#xff08;2&#xff09;掌握系统建模过程中参数的整定&#xff0c;体会参数变化对系统的影响&#xff1b; &#xff0…

单片机开发板上外设资源讲解

单片机开发电路板上简单外设 开发板上各基础外设LED灯按键&#xff1a;数码管介绍液晶屏矩阵键盘扫描的概念LED点阵屏实时时钟蜂鸣器存储器 温度传感器&单总线 开发板上各基础外设 LED灯 中文名&#xff1a;发光二极管 外文名&#xff1a;Light Emitting Diode 简称&…

杨校老师项目之基于单片机STC89C52的智能环境监测系统【嵌入式】

获取全套资料&#xff1a; 有偿获取&#xff1a;mryang511688 技术&#xff1a;C语言、单片机等 摘要&#xff1a; 此设计可分为三个主要部分。此中的温度和湿度的检测功能&#xff0c;通过操纵单总线型温湿度传感器DHT11以数字形式显示&#xff0c;实现了切确测得温湿度的功能…

如何管理多个版本的Node.js

我们如何在本地管理多个版本的Node.js&#xff0c;有没有那种不需要重新安装软件再修改配置文件和环境变量的方法&#xff1f;经过我的查找&#xff0c;还真有这种方式&#xff0c;那就是nvm&#xff08;Node Version Manager&#xff09;。 下面我就给大家介绍下NVM的使用 1…

vs2019 c++中模板 enable_if_t 的使用

&#xff08;1&#xff09; 该模板的定义如下&#xff1a; template <bool _Test, class _Ty void> struct enable_if {}; // no member "type" when !_Testtemplate <class _Ty> struct enable_if<true, _Ty> { // type is _Ty for _Testusing …