搜索
bottom↓
回复: 7

mini2440串口测试代码,bootloader

[复制链接]

出0入0汤圆

发表于 2009-9-20 09:31:21 | 显示全部楼层 |阅读模式
/*
;************************************************************************************************************
;*
;*                                          http://blog.chinaunix.net/u3/104083/
;*                                      
;*--------------------------------------------- 文件信息 ----------------------------------------------------                                      
;*
;* 文件名称 : MAIN.c       
;* 文件功能 : 应用程序
;* 补充说明 :
;*-------------------------------------------- 最新版本信息 -------------------------------------------------
;* 修改作者 : JackArm
;* 修改日期 : 2009/09/09
;* 版本声明 : V1.0.1
;*-----------------------------------------------------------------------------------------------------------
;*-----------------------------------------------------------------------------------------------------------
;************************************************************************************************************
;*/

#include   <stdio.h>   
#include   <stdlib.h>   
#include   <stdarg.h>
#include   <string.h>

#include"../Inc/jack2440.h"

#define UART_BAUD0 115200//串口波特率

#define FCLK 400000000
#define HCLK (FCLK/4)
#define PCLK (HCLK/2)
#define U32 unsigned int

void UartSend_String(char *pdate);
/*
*************************************************************************************************************
- 函数名称 : void Delay(unsigned int tem)
- 函数说明 : 延时函数
- 输入参数 : tem
- 输出参数 : 无
*************************************************************************************************************
*/
void Delay(unsigned int tem)
{
while(tem--);
}

/*
*************************************************************************************************************
- 函数名称 : void UartZero_Rcv(void)
- 函数说明 : 中断初始化函数
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/
void __irq UartZero_Rcv(void)
{
unsigned char Rcv[2];

Rcv[0] = rURXH0;
Rcv[1] = '\0';
UartSend_String((char*)Rcv);
ClearSubPending(BIT_SUB_RXD0);
ClearPending(BIT_UART0);
}

/*
*************************************************************************************************************
- 函数名称 : void Interrupt_Init(void)
- 函数说明 : 中断初始化函数
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/
void Interrupt_Init()
{
        pISR_UART0=(unsigned int)UartZero_Rcv;//串口收中断函数
        rINTMOD=0;                            //所用中断都是IRQ
        rINTMSK=0xefffffff;                   //开串口的中断
        rINTSUBMSK=0x7fe;                     //开串口收的中断
}
/*
*************************************************************************************************************
- 函数名称 : void UartInit(void)
- 函数说明 : 串口0的初始化函数
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/
void UartInit(void)
{
        rGPHCON = (2 << 6) | (2 << 4) | (2 << 2) | 2;//TXD0-GPH2 RXD0-GPH3 都在H口的
           rGPHUP  = 0x0F;                                     //GPH[0:7]上拉除能
    //初始化Uart相关寄存器
        rULCON0 = 0x3;
        rUCON0  = 0x245;
        rUFCON0 = 0x0;  
        rUMCON0 = 0x0;
    rUBRDIV0=( (int)(PCLK/16./UART_BAUD0+0.5) -1 );   //Baud rate divisior register 0
}

/*
*************************************************************************************************************
- 函数名称 : void UartInit(void)
- 函数说明 : 串口0的初始化函数
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/
void UartSend_String(char *pdate)
{
while((*pdate) != '\0' )
{
  while(!(rUTRSTAT0&0x4));//等到发送缓冲区为空;
  rUTXH0=*pdate;          //发送一个BYTE
  pdate++;                //指针指向下一个字符
}
}
/*
*************************************************************************************************************
- 函数名称 : int Main(void)
- 函数说明 : C代码入口函数
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/
int Main(void)
{
  UartInit();
  Interrupt_Init();
  UartSend_String("/*********************************************/\n");
  UartSend_String("/*    http://blog.chinaunix.net/u3/104083/   */\n");
  UartSend_String("/*                   JackArm                 */\n");
  UartSend_String("/*********************************************/\n");
while(1)
{
  Delay(900000);//灯闪烁
  rGPBDAT =(rGPBDAT|(0xA<<5))&(~(rGPBDAT&(0xA<<5)));
}
return 0;
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

发表于 2009-9-21 13:02:51 | 显示全部楼层
没人顶我座个位置

出0入0汤圆

发表于 2009-9-21 13:03:28 | 显示全部楼层

出0入0汤圆

发表于 2009-11-6 14:09:42 | 显示全部楼层

出0入0汤圆

发表于 2009-11-7 00:29:47 | 显示全部楼层
嘿嘿,不错。

出0入0汤圆

 楼主| 发表于 2010-7-15 18:40:50 | 显示全部楼层
#include<linux/init.h>
#include<linux/module.h>

MODULE_LICENSE("Dual BSD/GPL");
MODULE_AUTHOR("Lu Li");
MODULE_DESCRIPTION("A simple Hello World");
MODULE_VERSION("V1.0");
static int hello_init(void)
{
        printk(KERN_ALERT"Hello World init!\n");
        return 0;
}

static void hello_exit(void)
{
        printk(KERN_ALERT"Hello World exit!\n");
}

module_init(hello_init);
module_exit(hello_exit);

出0入0汤圆

发表于 2010-8-31 20:25:12 | 显示全部楼层
顶一个!

出0入0汤圆

发表于 2012-4-30 12:55:31 | 显示全部楼层
回头测试一下第一个程序,看能否在2440下裸奔。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-3 02:38

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表