Star ZY 2022-01-17 09:10 采纳率: 66.7%
浏览 198
已结题

关于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月25日
  • 已采纳回答 1月17日
  • 创建了问题 1月17日

悬赏问题

  • ¥15 关于#硬件工程#的问题:求一下解题思路
  • ¥15 运筹学对偶单纯行法构造扩充问题
  • ¥20 XP系统的老电脑一开机就提示找不到rundll.exe,付费求解
  • ¥15 milvus查询出来的score怎么转换成0-1之间的相似性
  • ¥15 多ip服务器站群如何搭建l2tp服务器
  • ¥15 lvgl V9移植到linux开发板
  • ¥15 VB.net中在窗体中创建一个button控件来关闭窗体,但是提示错误,我该怎么办
  • ¥15 网上下载好的程序但是arduinoIDE编程报错,运行不了,哪里出错了,能具体给改一下吗
  • ¥15 Sharepoint JS开发 付费技术指导
  • ¥15 输入程序运行仿真后,烟雾值不实时检测,变成固定值