📄 main.c
字号:
/****************************************Copyright (c)**************************************************
** 沈阳昊通科技服务有限公司
** http://www.inhow.com
**
**-------------------------------------------文件信息---------------------------------------------------
** 文件名: MAIN.C
** 最后修改日期: 2008-01-20
** 最后版本: 1.0
** 相关描述: 主函数程序
**
**------------------------------------------------------------------------------------------------------
** 作者: 陈伟斌
** 创建时间: 2008-01-20
** 最后版本: 1.0
** 相关描述: 试用版本
**
**------------------------------------------------------------------------------------------------------
** 修改者:
** 修改时间:
** 版本:
** 相关描述:
**
********************************************************************************************************/
#include "config.h"
//******************************************************************************************************
//函数名:DelayNS()
//功能: 延时
//参数: dly
//返回值:none
//作者: 陈伟斌
//时间:2008/01/20
//******************************************************************************************************
void DelayNS(uint32 dly)
{
uint32 i;
for(;dly>0;dly--)
for(i=0;i<5000;i++);
}
volatile uint8 chFlag=0; //当接受到回车符时,变为1告诉主函数,发送主函数里的数据
volatile uint8 chCount=0; //数据下标控制
uint8 pchBuf[100]; //数据缓冲数据
/*******************************************************************************************************
* 名 称:IRQ_UART0()
* 功 能:串口UART0接收中断。
* 入口参数:无
* 出口参数:无
*********************************************************************************************************/
void __irq IRQ_UART0(void)
{
uint8 bak;
if(!chFlag)
{
bak=U0RBR;
pchBuf[chCount]=bak;
chCount++;
if(bak=='\r')
{
chFlag=1;
chCount=0;
}
}
VICVectAddr = 0x00; // 中断处理结束
}
/*******************************************************************************************************
* 名 称:ClearBuf()
* 功 能:将缓冲器里的数据清零。
* 入口参数:字符串首地址
* 出口参数:无
*********************************************************************************************************/
void ClearBuf(uint8 *Str)
{
uint8 i;
for(i=0;i<100;i++)
*(Str+i)=0;
}
//******************************************************************************************************
//主函数main()
//功能描述:
//作者:
//时间:
//******************************************************************************************************
int main(void)
{
UARTMODE uart0_set;
PINSEL0 = 0x00000005; // 设置I/O连接到UART0
uart0_set.datab = 8; // 8位数据位
uart0_set.stopb = 1; // 1位停止位
uart0_set.parity = 0; // 无奇偶校验
Uart_Init(115200, uart0_set); // 初始化串口模式
U0FCR = 0x01; // 使能FIFO,并设置触发点为8字节
U0IER = 0x01; // 允许RBR中断,即接收中断
/* 设置中断允许 */
VICIntSelect = 0x00000000; // 设置所有通道为IRQ中断
VICVectCntl0 = 0x20|0x06; // UART0中断通道分配到IRQ slot 0,即优先级最高
VICVectAddr0 = (int)IRQ_UART0; // 设置UART0向量地址
VICIntEnable = 0x00000040; // 使能UART0中断
Uart_SendStr((uint8*)"test 0k1");
while(1) // 等待中断
{
if(chFlag) // 是否已经接收到\r
{
Uart_SendStr((uint8*)"test 0k3");
Uart_SendStr(pchBuf);
ClearBuf(pchBuf);
chFlag=0;
}
}
return(0);
}
/*********************************************************************************************************
** 文件结束
*********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -