zoukankan      html  css  js  c++  java
  • Uart串口


    title: Uart串口
    tags: ARM
    date: 2018-10-20 16:38:28

    Uart串口

    和单片机的应用没什么区别,首先设置IO复用,设置波特率和数据位,以及中断相关的,简单的应用测试可以先关掉中断.从下图看到,usb转串口连接到COM1COM1是内部的Uart0

    mark

    mark

    程序初始化

    UART0
    RX0 GPH3
    TX0 GPH2
    //init uart
    void Uart0_init()
    {
    	//配置GPIO 复用为uart
    	//配置相应的 GPHCON 为10 串口
    	// 也就是 _BIT5,BIT7 置1  BIT4,BIT6清零
    	GPHCON &=~(_BIT4|_BIT5|_BIT6|_BIT7);
    	GPHCON |=(_BIT5|_BIT7);
    
    	//设置上拉
    	GPHUP &=~(_BIT2|_BIT3);
    
    	//禁止红外,8N1
    	ULCON0=(_BIT0|_BIT1);
    
    	// PCLK(50M),中断/查询模式打开
    	// FCLK : HCLK : PCLK = 400m : 100m : 50m
    	UCON0 = (0x01)|(0x01<<2); 
    	UBRDIV0=26;//CLK/(baund*16)-1
    
    
    	//UFCON0 FIFO 不使用
    	//UMCON0 不使用流控
    	//UTRSTAT0 中断标志位
    	//UERSTAT0 错误标志
    	//UFSTAT0  FIFO标志
    	//UMSTAT0  模式配置,CTS
    	//UTXH0、URXH0    BUF
    
    	//这里要清除标志位,不然好像有点问题
    	UTRSTAT0=0x06;
    }
    
    int putchar(int c)
    {
    	while(!(UTRSTAT0&_BIT2));
    	// UTXH0 被定义为uint,这里应该是char类型的地址0x50000023(B) 
    	UTXH0 = (unsigned char )c;
    }
    int getchar(void)
    {
    	while(!(UTRSTAT0&_BIT0));
    	return URXH0;
    }
    
    int puts(const char *s)
    {
    	while(*s)
    	{
    		putchar(*s);
    		s++;
    	}
    }
    
  • 相关阅读:
    BZOJ 1001: [BeiJing2006]狼抓兔子
    BZOJ 1031: [JSOI2007]字符加密Cipher
    BZOJ 1083: [SCOI2005]繁忙的都市
    BZOJ 1034: [ZJOI2008]泡泡堂BNB
    BZOJ 1040: [ZJOI2008]骑士
    BZOJ 1026: [SCOI2009]windy数
    BZOJ 1022: [SHOI2008]小约翰的游戏John
    BZOJ 1018: [SHOI2008]堵塞的交通traffic
    BZOJ: 2819 Nim
    bzoj 3144
  • 原文地址:https://www.cnblogs.com/zongzi10010/p/10023572.html
Copyright © 2011-2022 走看看