Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2585032
  • 博文数量: 877
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 5920
  • 用 户 组: 普通用户
  • 注册时间: 2013-12-05 12:25
个人简介

技术的乐趣在于分享,欢迎多多交流,多多沟通。

文章分类

全部博文(877)

文章存档

2021年(2)

2016年(20)

2015年(471)

2014年(358)

2013年(26)

分类: IT业界

2014-12-16 09:47:59

// +FHDR -----------------------------------------------------------------------
// Copyright (c) 2014, Beijing Hongsi Electronic Technology Co., Ltd.
// HSEC Confidential Proprietary
// 2014/05/08
//
// HSEC is a trademark of Beijing Hongsi Electronic Technology Co., Ltd.
// -----------------------------------------------------------------------------
// File Name: uart.c
// Type: C Language 
//
// -----------------------------------------------------------------------------
// Description:
// This is a sample for uart operations
//
// -----------------------------------------------------------------------------
// Background Description:
// 
// -----------------------------------------------------------------------------
// Revision History
// DATE         AUTHOR          DESCRIPTION
// 2014/05/08 V1.0
// -FHDR -----------------------------------------------------------------------


// ---------------------------------------------------------------------  
// Include File Declarations 
// --------------------------------------------------------------------- 
#include "HSC32K1_CGM.h"
#include "HSC32K1_Registers.h"
#include "types.h"
#include "uart.h"


#include


//#include "cgm.h"


#define __va_start(parm) (__std(va_list)) ((char *)&parm + (sizeof(parm) + (1U) & ~(1U)))        /* mm 9708027 */
#define va_start(ap, parm) ap = __va_start(parm)
#define va_end(ap)
#define va_copy(dest, src)  dest = src             /* mm 980824 */




#define Print_jeffasd(_x_) printf _x_ printf("\r\n");


#define printf sio_printf


#define NULL 0


typedef char * va_list;


int sio_printf(const char *fmt,...);


/*
void UART_Init(void)
{
//enable USI (UART) clock
MCGCR |= USI1_ON;

// UART参数配置
USI1_BR = 0x0027; // 设置波特率为38400 (24M系统时钟下)



USI1_CR = 0x1c00; // 8bit  清空fifo  常规模式接收/发送 数据位8无奇偶校验
USI1_CR |= 0x0010; // 使能接收器 !RAM接收不定长数据,详见数据手册RAM接收相关章节

// UART中断配置
USI1_IER |= 0x30; //TC中断使能,RC中断使能;

MCGCR &= (~USI1_ON);
}
*/


void UART_Init(void)
{
MCGCR |= USI1_ON;
// UART参数配置
USI1_BR = 0x0027; // 设置波特率为38400 (24M系统时钟下)
USI1_CR = 0x1c20; // 8bit  清空fifo  常规模式接收/发送 数据位8无奇偶校验
USI1_CR |= 1<<4;//使能  发送
// UART中断配置
USI1_IER |= 0x00; //;
MCGCR &= (~USI1_ON);
}


void UART_USI3_Init(void)
{
MCGCR |= USI3_ON;
// UART参数配置
USI3_BR = 0x0027; // 设置波特率为38400 (24M系统时钟下)
USI3_CR = 0x1c20; // 8bit  清空fifo  常规模式接收/发送 数据位8无奇偶校验
USI3_CR |= 1<<4;//使能  发送
// UART中断配置
USI3_IER |= 0x00; //;
MCGCR &= (~USI3_ON);
}


void UART_FIFO_Transmit(char cValue)

//enable USI (UART) clock
USI1_SR|=1<<4;//TC写1 清零
MCGCR |= USI1_ON;
while((USI1_SR&(1<<1))==0);//发送满,一直等待
USI1_DRL = cValue;
while((USI1_SR&(1<<4))==0);//发送未完成,一直等待 0
USI1_SR|=1<<4;//TC写1 清零
}


void TERMIO_PutChar(char cValue)

//enable USI (UART) clock
USI1_SR|=1<<4;//TC写1 清零
MCGCR |= USI1_ON;
while((USI1_SR&(1<<1))==0);//发送满,一直等待
USI1_DRL = cValue;
while((USI1_SR&(1<<4))==0);//发送未完成,一直等待 0
USI1_SR|=1<<4;//TC写1 清零
}


void TERMIO_PutChar_USI3(char cValue)

//enable USI (UART) clock
USI3_SR|=1<<4;//TC写1 清零
MCGCR |= USI3_ON;
while((USI3_SR&(1<<1))==0);//发送满,一直等待
USI3_DRL = cValue;
while((USI3_SR&(1<<4))==0);//发送未完成,一直等待 0
USI3_SR|=1<<4;//TC写1 清零
}


void UART_RAM_Transmit(U16 addr, U16 len)
{
//enable USI (UART) clock
MCGCR |= USI1_ON;

USI1_RADDR = addr;
USI1_RLENR = len;
USI1_SR |= 0x0010;
USI1_CR |= 0x0040; //RAM缓存发送 ;
USI1_CR |= 0x0080; //RAM启动;

//not wait for the completion of the transmitting
//it will be processed in interrupt service
}




void UART_RAM_Receive(U16 addr, U16 len)
{
//enable USI (UART) clock to ensure it works
MCGCR |= USI1_ON;

USI1_RADDR = addr;
USI1_RLENR = len;

USI1_CR &= (~0x0040); //RAM缓存接收 ;
USI1_CR |= 0x0080; //RAM启动;

//not wait for the completion of the receiving
//it will be processed in interrupt service
}




void HAL_UART_PrintStr(char *pszMsg)
{
if(pszMsg == NULL)
{
return;
}
while(pszMsg[0] != NULL)
{
// TERMIO_PutChar(pszMsg[0]);//串口1
TERMIO_PutChar_USI3(pszMsg[0]);//串口3
pszMsg++;
}
}


static void putLine(void)
{
sio_printf("\r\n");
}


int sio_printf(const char *fmt,...)
{
    char __printf_buf[128];
va_list args;
int i;
//if(donot_print)
//return 0;


va_start(args, fmt);
i=3;
vsprintf(__printf_buf,fmt,args);
va_end(args);
HAL_UART_PrintStr(__printf_buf);
return i;
}

阅读(1376) | 评论(0) | 转发(0) |
0

上一篇:详解sizeof

下一篇:USB MODE SENSE 问题

给主人留下些什么吧!~~