[其他ST产品] stm32管脚输出波形抖动程序如下

[复制链接]
1393|19
 楼主| elephant00 发表于 2024-7-26 18:37 | 显示全部楼层 |阅读模式
本人从MCS—51转到STM32,在学习中发现,STM32输出的波形会有抖动,我程序操作过程是:
#define c1_set GPIO_SetBits(GPIOA, GPIO_Pin_1);
#define c1_clr GPIO_ResetBits(GPIOA, GPIO_Pin_1);
其它程序省略
while(1)
{
       c1_set;
        delay_us(4);
        c1_clr;
        delay_us(4);
        c1_set;
        delay_us(4);
        c1_clr;
        delay_us(4);
        c1_set;
        delay_us(4);
        c1_clr;
        delay_us(4);
        c1_set;
        delay_us(4);
        c1_clr;
        delay_us(4);
}
/延时US级函数
void delay_us(int i)
{
  int j;
  while(i>0)
  {
  for(j=0;j
LcwSwust 发表于 2024-7-26 19:01 | 显示全部楼层
有波形吗?抖动有多少?
xionghaoyun 发表于 2024-7-27 14:54 | 显示全部楼层
抖正常 你自己写的延迟啊
LOVEEVER 发表于 2024-7-28 13:41 | 显示全部楼层
抖动还是需要进行相关滤波算法
范德萨发额 发表于 2024-7-29 15:47 | 显示全部楼层
你使用的软件延时函数delay_us可能不够精确,导致波形不稳定。
申小林一号 发表于 2024-7-29 22:37 | 显示全部楼层
感谢分享
纠结的那些年 发表于 2024-7-31 11:59 | 显示全部楼层
使用GPIO_SetBits和GPIO_ResetBits进行GPIO操作可能会有一些额外的延时
AdaMaYun 发表于 2024-7-31 12:46 | 显示全部楼层
有抖动正常,需要进行滤波处理
公羊子丹 发表于 2025-3-20 08:20 | 显示全部楼层
你的波形抖动问题可能是延时函数 delay_us() 的精度不够高,建议使用硬件定时器来生成精确的延时,这样可以减少 CPU 处理延时时的抖动。
周半梅 发表于 2025-3-20 08:21 | 显示全部楼层
试试用 HAL_Delay() 来代替 delay_us(),它能够提供更加稳定的延时控制。或者直接使用定时器生成精确的时间控制。
帛灿灿 发表于 2025-3-20 08:22 | 显示全部楼层
你这段代码看起来应该是用来产生方波,STM32 其实有很多方式可以做这件事,比如直接用定时器输出 PWM 信号,可能比用延时函数要稳定得多。
童雨竹 发表于 2025-3-20 08:23 | 显示全部楼层
你可以尝试用硬件定时器定期切换 GPIO 引脚状态,这样能避免软件延时带来的不稳定,精度会高很多。
万图 发表于 2025-3-20 08:24 | 显示全部楼层
你这个 delay_us() 函数是用忙等方式实现的,会占用 CPU,可能造成程序执行不流畅。使用定时器或者中断来进行延时可能效果更好。
Wordsworth 发表于 2025-3-20 08:25 | 显示全部楼层
你能提供一下 delay_us() 函数的完整代码吗?如果它的精度不足,可能会导致波形抖动。如果是简单的循环,可能会受到编译器优化的影响。
Bblythe 发表于 2025-3-20 08:26 | 显示全部楼层
可以考虑优化延时函数,避免高精度延时占用过多的 CPU 时间。一个更优的做法是使用一个计时器与中断来产生精确的时间间隔。
Pulitzer 发表于 2025-3-20 08:27 | 显示全部楼层
STM32 支持 DMA 和定时器,若你用定时器配合 PWM 模式生成方波,会更加精确稳定,避免软件延时带来的波形误差。
Uriah 发表于 2025-3-20 08:28 | 显示全部楼层
另外,检查一下 GPIO 的配置,确保输出模式正确,有时如果配置不当也会导致波形不稳定或抖动。
Clyde011 发表于 2025-3-20 08:29 | 显示全部楼层
如果频率要求不高,也可以调整延时的长度,增加 delay_us() 中的循环次数,看看波形的抖动是否会减轻。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1031

主题

3946

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部