串口

作者: 昨天剩下的一杯冷茶 | 来源:发表于2020-07-27 16:35 被阅读0次
#include <iocc2540.h>
#include "uart.h"


void setting_baudrate(unsigned long baudrate)
{
  switch(baudrate)
  {
    case 115200:
      U0GCR = 11;                       
      U0BAUD = 216;              //波特率设为115200
    break;
    case 9600:
      U0GCR = 8;                       
      U0BAUD = 59;              //波特率设为9600
    break; 
    default:
      U0GCR = 9;                       
      U0BAUD = 59;              //波特率设为9600
    break;   
  
  }
}
void uart_init(void)
{
  CLKCONCMD &= ~(1<<6);//设置系统时钟源为 32MHZ 晶振
  while(CLKCONSTA & (1<<6));//等待晶振稳定为 32M
  CLKCONCMD &=~((1<<6)|(7<<0));//设置系统主时钟频率为 32MHZ
  
  PERCFG = 0x00;
  P0SEL |=(0xf<<2);
  P2DIR &= ~(3<<6);
  U0CSR |= 1<<7;//USART mode select 0: SPI mode 1: UART mode
  
  setting_baudrate(115200);
  UTX0IF=0;
  U0CSR |=1<<6;//UART receiver enable. Note: Do not enable receive before UART is fully configured.0: Receiver disabled 1: Receiver enabled
  
  //enable irq
  URX0IE=1;
  EA=1;  
  
  
}
void uart_send(char *p,int len)
{
  unsigned int i;
  for (i=0; i<len; i++)
  {
    U0DBUF = p[0];
    p++;
    while(!UTX0IF);
    UTX0IF=0;
  }
}

unsigned char cmd;
#pragma vector=URX0_VECTOR
__interrupt void URX0_ISR(void)
{
  cmd=U0DBUF;
  URX0IF=0;
}


//main.c
#include "led.h"
#include "timer.h"
#include "uart.h"
/*
UART0 对应的外部设备 IO 引脚关系为: P0_2 ------ RX
                                     P0_3 ------ TX
UART1 对应的外部设备 IO 引脚关系为: P0_5 ------ RX
                                     P0_4 ------ TX
*/
void main(void)
{

  
  led_init();
  timer1_init();
  uart_init();
  uart_send("hello world\r\n",sizeof("hello world\r\n"));
  while(1)
  {
      switch(cmd)
      {
        case 0x00:
          LED1_OFF
          LED2_OFF
          LED3_OFF
          uart_send("close all led\r\n",sizeof("close all led\r\n"));
          cmd=0xff;
        break;
        
        case 0x01:
          LED1_ON
          LED2_OFF
          LED3_OFF
          uart_send("open led1\r\n",sizeof("open led1\r\n"));
          cmd=0xff;
        break;
        case 0x02:
          LED1_OFF
          LED2_ON
          LED3_OFF
          uart_send("open led2\r\n",sizeof("open led2\r\n"));
          cmd=0xff;
        break;
        case 0x03:
          LED1_OFF
          LED2_OFF
          LED3_ON
          uart_send("open led3\r\n",sizeof("open led3\r\n"));
          cmd=0xff;
        break;
      }


  }
}
image.png

相关文章

  • Android串口通讯

    串口通讯的步骤: 1.打开串口。 2.串口处于监听状态 3.想串口写入数据,串口接收到数据返回数据 串口的一个基本...

  • 关于串口格式与报文格式

    《串口硬件分类》中已经说明了几种串口的类型,并在《串口通信协议》中说明了几种串口协议形式,这里就常用的串口协议进一...

  • 树莓派串口通信

    树莓派的串口默认为串口终端调试使用,如要正常使用串口则需要修改树莓派设置。关闭串口终端调试功能后则不能再通过串口登...

  • 串口编程

    串口连接界面 主要控件 打开串口 自动获取串口列表并显示 初始化串口 写入卡片 插入打卡记录并显示打卡成功

  • Android平台的串口通信技术

    概念 串口通信 概念;串口通信(Serial Communications)按位(bit)发送和接收字节。串口可以...

  • 使用socat虚拟串口

    1、下载socat 2、虚拟串口 3、使用串口 根据步骤2创建的串口名称链接串口、2步骤进程需一直开启

  • 嵌入式开发 - GDB串口远程调试

    1. 准备调试串口 目标板一般只有一个串口用于控制台输入输出,串口远程调试需要第二个串口。下面假设这个串口设备是/...

  • OPENWRT串口通信的实现

    串口设置 开机启动信息可以看到串口的名称,例如以下串口启动信息: 可以看到串口的名称为ttyATH0,此时可以ls...

  • Arduino 软串口

    软串口 软串口就是通过将开发板的串口,映射到普通IO上作为串口使用 接线图 RXTXD10D11 代码

  • 2018-10-09 Mac的Terminal窗口之TTY

    PC上的串口一般是ttyS,板子上Linux的串口一般叫做ttySAC,是usb口转串口的是ttyUSB,外插串口...

网友评论

      本文标题:串口

      本文链接:https://www.haomeiwen.com/subject/vyozlktx.html