zoukankan      html  css  js  c++  java
  • GPIO模拟串口发送,操作系统FREERTOS

    #define GPIO_PORT_SIMULATE_UART_TX GPIOE
    #define GPIO_PIN_SIMULATE_UART_TX GPIO_PIN_4
    #define TX(n) gpio_bit_write(GPIO_PORT_SIMULATE_UART_TX,GPIO_PIN_SIMULATE_UART_TX,(bit_status)n)
    #define BAUD_9600_US (104)
    #define BAUD_115200_US (8)

    void Drv_Simulate_Uart_Init(void)
    {
      gpio_init(GPIO_PORT_SIMULATE_UART_TX,GPIO_MODE_OUT_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_SIMULATE_UART_TX);
      TX(1);
    }

    void Drv_Simulate_Uart_SendByte(bs_uint8_t data)
    {

      taskENTER_CRITICAL();//这里必须要,不然系统调度导致发送时序错误,从而产生乱码,且不要放在Drv_Simulate_Uart_SendString()函数里面,因为如果发送较长的buffer,会影响正常调度,因为里面用的是硬件延时

      bs_uint8_t i = 0;
      TX(0); //起始位
      DelayUs(BAUD_115200_US);
      for(i = 0; i < 8; i++)
      {
        if(data & 0x01)
        {
          TX(1);
        }
        else
        {
          TX(0);
        }
      DelayUs(BAUD_115200_US);
      data >>= 1;
      }
      TX(1); //停止位
      DelayUs(BAUD_115200_US);

      taskEXIT_CRITICAL();//这里必须要,不然系统调度导致发送时序错误,从而产生乱码

    }

    void Drv_Simulate_Uart_SendString(bs_uint8_t *p,bs_uint8_t len)
    {
      
      while(len--)
      {
        Drv_Simulate_Uart_SendByte(*p);
        p++;
      }

      return;
    }

  • 相关阅读:
    ASP.Net MVC-Web API使用Entity Framework时遇到Loop Reference
    springboot-32-使用mvc测试
    docker-dockerfile使用
    java-jmx使用
    docker-使用ali云加速
    docker-基础命令
    centos7-使用nginx做ftp站
    maven-插件-不同的开发环境指定
    maven
    mysql-定时对表分区
  • 原文地址:https://www.cnblogs.com/ycpkbql/p/13815951.html
Copyright © 2011-2022 走看看