GPIO端口状态实现最大速度翻转

文章介绍了占空比的概念及其计算公式,并提供了三种在STM32上实现GPIO端口状态快速翻转的方法,包括使用HAL库、直接操作寄存器以及汇编指令。这些方法有助于优化微控制器的性能,实现不同速度的端口状态切换。
摘要由CSDN通过智能技术生成

GPIO端口状态实现最大速度翻转

一、占空比什么意思

占空比是指电路被接通的时间占整个电路工作周期的百分比。比如说,一个电路在它一个工作周期中有一半时间被接通了,那么它的占空比就是50%。如果加在该工作元件上的信号电压为5V,则实际的工作电压平均值或电压有效值就是2.5V。假设该元件为一个电子阀门,当电路全部接通时,阀门全开;当占空比为50%时,阀门状态为半开。同理,当占空比设置为20%时,阀门的开度显然应该为20%。这样,这个阀门就可以在0%(全闭)到100%(全开)的范围内任意调节。

占空比什么意思

二、占空比计算公式

占空比是指高电平在一个周期之内所占的时间比率,方波的占空比为50%,占空比为0.5,说明正电平所占时间为0.5个周期。若信号的周期为T,每周期高电平时间为t1,低电平时间为t2,T=t1+t2,则占空比D=t1/T。占空比(Duty Cycle)在电信领域中有如下含义:在一串理想的脉冲序列中(如方波),正脉冲的持续时间与脉冲总周期的比值。例如:脉冲宽度1μs,信号周期4μs的脉冲序列占空比为0.25。

占空比计算公式

1.管脚配置:

image-20221113195910567

2.时钟配置

image-20221113202842161

3.核心代码

  while (1)
  {
	  //	方式一: 使用HAL库进行翻转
	  HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
	  //    方式二: 直接使用C语言操作寄存器
	  GPIOC->BSRR = (((GPIOC->ODR) & GPIO_PIN_13) << 16u) | (~(GPIOC->ODR) & GPIO_PIN_13);
    /* USER CODE END WHILE */
  }


方式三: 使用B指令
    	  __asm__(//这里是双下划綫
		  "speed_test PROC"
			"EXPORT  speed_test"
			"LDR     R0,=0x40010800"
			"LDR     R1,=0x8000"
		  "toggle"
			"STR     R1,[R0,#0x10]"
			"STR     R1,[R0,#0x14]"
			"B		toggle"
			"BX      LR"
			"ENDP"
	  );

参考链接:

1.STM32 IO口翻转速度测试报告-CSDN博客

2.实现STM32 GPIO端口状态实现最大速度翻转

3.STM32Cube工程转为Keil工程的方法介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值