⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 ARM7通用串行口的开发程序
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               广州周立功单片机发展有限公司
**                                     
**                                       工控事业部  
**
**                                 http://www.zlgmcu.com
**
**--------------文件信息--------------------------------------------------------------------------------
** 文 件 名: main.c
** 创 建 人: 甘达
** 最后日期: 2005年4月28日
** 描    述: UART0收发演示程序。
**
** 实验现象: 在SmartARM2200运行本程序,使用串口助手发送数据给SmartARM2200的UART0,波特率为115200Bps。
**           SmartARM2200应当以512字节为单位,原包返回数据。 
**
** 设置说明: Flash => Bank0;  PSRAM => Bank1;  LPC2210; Start address 0x80000000, Memory size 0x00200000;
**           由于本工程已经升级,用户无论在何种模式调试,以上跳线和AXD设置均不需要改变。
**
** 驱动特点: UART0驱动收发方式均使用FIFO,工作于中断方式。因此UART0收发均在后台自动完成,与用户程序无关。
**
** 交互模型: PC <=> UART0中断服务程序 <=> 缓冲池(消息队列) <=> 用户程序
**
** 技术支持: 本程序(代码)仅用于教学目的,对于客户的修改和商业化移植工作不提供任何技术支持。
**
** 声    明: 广州周立功单片机发展有限公司不提供任何类型的担保。不论是明确的,还是隐含的。
**           包括但不限于合适特定用途的保证。全部的风险,由使用者来承担。如果程序出现缺陷,
**           使用者承担所有必要的服务、修改和改正的费用。
**
** 注意事项: uCOS II 2.52源代码及"uCOS II"标识均属Micrium公司所有。
**
**--------------历史版本信息----------------------------------------------------------------------------
** 创 建 人: 甘达
** 版    本: v1.0
** 日   期: 2005年4月28日
** 描   述: 原始版本
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修 改 人: 甘达 
** 版    本: v1.0
** 日   期: 2005年8月31日
** 描   述: 用于SmartARM2200的UART0中断工作方式的评估。BEEP报警指示缓存满载,LED指示接收缓存负载状况。
**           修改LED和BEEP相关代码即可用于MagicARM2200和EasyARM2200。
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#include    "config.h"

#define TASK_STK_SIZE   64

OS_STK  TaskStartStk[TASK_STK_SIZE];
OS_STK  Task0Stk[TASK_STK_SIZE];

uint8   Buf_Global[1024];

void    TaskStart(void *pdata);
void    Task0(void *pdata);

/*********************************************************************************************************
** 函数名称: main
** 功能描述: c语言的主函数,由它启动多任务环境
** 输   入: 无
** 输   出: 无
** 全局变量: 无
** 调用模块: OSInit,OSTaskCreate,OSStart
**
** 作   者: 甘达
** 日   期: 2005年8月31日
**-------------------------------------------------------------------------------------------------------
** 修 改 人: 
** 日   期: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
int main (void)
{
    OSInit();
    OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 0);
    OSStart();
    return 0;
}

/*********************************************************************************************************
** 函数名称: TaskStart
** 功能描述: μCOS-II的第一个任务,通常由它初始化目标板和建立其它任。
**           将接收到的数据原包发回给PC。
** 输   入: 无
** 输   出: 无
** 全局变量: Buf_Global
** 调用模块: UART0_ReceiveNByte,UART0_SendNByte
**
** 作   者: 甘达
** 日   期: 2005年8月31日
**-------------------------------------------------------------------------------------------------------
** 修 改 人: 
** 日   期: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void  TaskStart(void *pdata)
{ 
    pdata = pdata;                                          // 避免编译警告

    OSTaskCreate(Task0, (void *)0, &Task0Stk[TASK_STK_SIZE - 1], 1);

    TargetInit();                                           // 目标板初始化
    
    while(1)
    {
        if(TRUE == UART0_ReceiveNByte(Buf_Global, 512))     // 如果能够成功在接收缓冲池获取512字节数据
        {
            UART0_SendNByte(Buf_Global, 512);               // 那么将此512字节数据压入发送缓冲池
        }
        OSTimeDly(OS_TICKS_PER_SEC/30);                     
    }
    
}

/*********************************************************************************************************
** 函数名称: Task0
** 功能描述: 显示当前缓冲池状况,如果缓冲池满,则BEEP报警。
** 输   入: 无
** 输   出: 无
** 全局变量: 
** 调用模块: QueueSize,QueueNData,OSTimeDly
**
** 作   者: 甘达
** 日   期: 2005年8月31日
**-------------------------------------------------------------------------------------------------------
** 修 改 人: 
** 日   期: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void  Task0(void *pdata)
{   uint32 size, n;

    pdata = pdata;                                          // 避免编译警告 

    while(1)
    {
        size = QueueSize((void *)UART0_ReceiveBuf);         // 获取接收缓冲池总容量
        n = QueueNData((void *)UART0_ReceiveBuf);           // 获取接收缓冲池当前数据量
        
        // size = QueueSize((void *)UART0_SendBuf);         // 获取发送缓冲池总容量
        // n = QueueNData((void *)UART0_SendBuf);           // 获取发送缓冲池当前数据量
        
        if(n < size - 1)
        {
            IO2CLR = ( (n<<4)/size ) << 28;
            OSTimeDly(OS_TICKS_PER_SEC/5);
        	IO2SET = 0xffffffff;
        }
        else
        {
            IO2CLR = 0xffffffff;
            IO0CLR = BEEP;	
        	OSTimeDly(OS_TICKS_PER_SEC/10);
            IO0SET = BEEP;	
            OSTimeDly(OS_TICKS_PER_SEC/5);
        }
    }
}

/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -