Star ZY
2022-01-17 09:10
采纳率: 66.7%
浏览 42

关于stm32电平翻转的问题

我想对PA1发送指令翻转电平,正常的置1和置0都是正常的,输出都是3v左右和0v。代码如下
#define POWERA1_ON GPIOA->ODR |= (1<<1)
#define POWERA1_OFF GPIOA->ODR &= ~(1<<1)
但是利用异或进行操作,引脚输出是1.06v,并且再次发送指令翻转输出是没变化的,一样是1.06v。下面两条都试过。
#define POWERA1_TUN GPIOA->ODR ^= GPIO_Pin_1 或 #define POWERA1_TUN GPIOA->ODR ^= (1<<1)
初始化代码如下:
gpio_InitTypeDef.GPIO_Mode=GPIO_Mode_Out_PP;
gpio_InitTypeDef.GPIO_Pin=GPIO_Pin_1;
gpio_InitTypeDef.GPIO_Speed=GPIO_Speed_2MHz;
GPIO_Init(GPIOA,&gpio_InitTypeDef);
主函数:

while(1)
    {
        switch(flag1)
        {
            case 1:
                POWERA1_TUN;//PA1翻转
                break;
            case 2:
                POWERA2_TUN;//PA2翻转
                break;
        }
    }
  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

  • Vice Versa XL 2022-01-17 09:36
    最佳回答

    while 导致 电平一直反转,因此会输出PWM波,此时用电压表测得的电压是PWM等效电压,如果用示波器看的话就是PWM波
    可以考虑将函数不放在while中

    评论
    解决 1 无用
    打赏 举报
查看更多回答(1条)

相关推荐 更多相似问题