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.管脚配置:
2.时钟配置
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"
);
参考链接: