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.hqwc.cn/news/701433.html

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

相关文章

国产银河麒麟V10SP1系统安装Qt和MySql步骤

安装软件&#xff1a;准备好Kylin-Desktop-V10-SP1-Release-hwe-2107-x86_64.iso和qt-opensource-linux-x64-5.14.2.run 安装步骤&#xff1a; 1、VMWare软件中新建一个虚拟机并安装Kylin-Desktop-V10-SP1-Release操作系统&#xff0c;安装时候输入密码的地方记得要用英文&am…

iOS 10.3新特性

一. 参考文章 参考文章1 二. 具体特性 1. 更便捷的方式获取用户评价 效果 实现代码&#xff08;就两行&#xff0c;在需要添加的位置调用&#xff09; #import <StoreKit/SKStoreReviewController.h> [SKStoreReviewController requestReview]; 注意问题 app内好评弹…

获取端到端的 SAP MM 定制功能,使工厂人员能够在整个流程中使用,包括创建、更改、显示和分析物料详细信息

会议主题&#xff1a;获得端到端的 SAP MM 定制服务&#xff0c;在整个流程中为工厂人员提供支持 会议时间&#xff1a;2024/05/16 14:30-15:00 (GMT08:00) 中国标准时间 - 北京 点击链接入会&#xff0c;或添加至会议列表&#xff1a; 腾讯会议 #腾讯会议&#xff1a;467-…

回复完成 输入框还显示值的问题

回复完成 输入框还显示值的问题 解决代码 先把id 值清空 再构建下这个输入框 $("#details_article_reply_content").val(""); // 清空textareavar editor editormd("article_details_reply", {width: "100%",height: "100%"…

基于NIOS-II软核流水灯和串口通信实现

文章目录 一、创建工程二、系统设计1. 在 “component library” 标签栏中找到 “Nios II Processor” 后点击 Add2. 在 ”Component Library” 标签栏中的查找窗口输入 jtag 找到 ”JTAG UART ”&#xff0c;然后点击 Add3. 添加片上存储器 On-Chip Memory(RAM)核4. 查找窗口输…

Scrapy爬虫:利用代理服务器爬取热门网站数据

在当今数字化时代&#xff0c;互联网上充斥着大量宝贵的数据资源&#xff0c;而爬虫技术作为一种高效获取网络数据的方式&#xff0c;受到了广泛的关注和应用。本文将介绍如何使用Scrapy爬虫框架&#xff0c;结合代理服务器&#xff0c;实现对热门网站数据的高效爬取&#xff0…

如何去掉图片背景改成透明的?一键图片去底色工具推荐

如何去掉图片背景改成透明的&#xff1f;在很多比较特殊的场景中&#xff0c;我们需要把图片背景底色去除后再进行使用&#xff0c;比如一些商品展示图或者是网页设计中的一些logo图标&#xff0c;专业人士会直接选择使用ps来处理&#xff0c;但是也有许多新手小白不知道怎么去…

智慧公厕的未来价值分析和创新设计

智慧公厕正在逐渐成为现代城市建设的重要组成部分。通过全面的数据云端化和自动化技术&#xff0c;智慧公厕实现了高效的数据分析和协作&#xff0c;提升了运行效率和管理水平。未来&#xff0c;智慧公厕将以“景厕融合”的目标发展&#xff0c;结合前沿科技和创新设计&#xf…

SL3038 48V/60V电动车里程增程器电源驱动芯片 大电流3A

在电动车领域中&#xff0c;电池续航能力一直是制约其广泛应用的关键因素之一。为了提高电动车的续航能力和使用效率&#xff0c;各大厂商纷纷投入研发&#xff0c;寻求更为先进的电源驱动芯片解决方案。其中&#xff0c;SL3038 48V/60V电动车里程增程器电源驱动芯片以其卓越的…

【HarmonyOS】Stage 模型 - 应用配置文件

如图所示&#xff1a; Stage 模型应用配置文件主要有两类&#xff1a; 全局配置文件。放在 AppScope 目录下&#xff0c;app.json5。用来配置应用全局的信息。模块配置文件&#xff0c;放在每个模块里&#xff0c;module.json5。用来配置模块的信息。 一、全局配置文件 示…

10G UDP协议栈 IP层设计-(6)IP TX模块

一、模块功能 1、上层数据封装IP报文头部 2、计算首部校验和 二、首部校验和计算方法 在发送方&#xff0c;先把IP数据报首部划分为许多16位字的序列&#xff0c;并把检验和字段置零。用反码算术运算把所有16位字相加后&#xff0c;将得到的和的反码写入检验和字段。接收方收…

图片标签 以及 常见的图片的格式

1.图片的基本使用 2.图片的常见格式 3.bmp格式