单片机
返回首页

2440裸机程序——串口收发数据

2022-01-26 来源:eefocus

工程当中需要添加 S3C2440A.s ;2440lib.c;main.c;uart0.c 这四个程序。


主程序:


/*********************************************************************************************

* File name: main.c

* Author: ZXL 

* Description: 在PC机通过串口0向终端发送一行字符(以回车键结束),开发板接收串口数据后,保存在数组中,再传回到PC端,通过终端回显。

* History: 2013.5.8

*********************************************************************************************/


#include 'def.h'

#include 'option.h'

#include '2440addr.h'     

#include '2440lib.h'

   

void dely(U32 tt)

{undefined

   U32 i;

   for(;tt>0;tt--)

        for(i=0;i<10000;i++);

}



void init()

{undefined

U32 i;

U8 key;

U32 mpll_val=0;

    i = 2 ; 

switch ( i ) //设置2440的时钟频率

{undefined

case 0:  //200

key = 12;

mpll_val = (92<<12)|(4<<4)|(1);

break;

case 1:  //300

key = 13;

mpll_val = (67<<12)|(1<<4)|(1);

break;

case 2:  //400

key = 14;

mpll_val = (92<<12)|(1<<4)|(1);

break;

case 3:  //440!!!

key = 14;

mpll_val = (102<<12)|(1<<4)|(1);

break;

default:

key = 14;

mpll_val = (92<<12)|(1<<4)|(1);

break;

}

//MDIV=92,PDIV=1,SDIV=1 通过配置MPLLCON,MPLL确定,即FCLK=400MHZ确定

ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3);

ChangeClockDivider(key, 12);   //FCLK:HCLK:PCLK = 1:1/4:1/8 =400M:100M:50M

    

Port_Init();

  

Uart_Init(0,115200);

    Uart_Select(0);   

Uart_Printf('n Uart0 Test!!!n'); 

}  

   

int main(int argc, char **argv)

{undefined

init();

    do

    {    

uart0();

}while(Uart_Getch() != ESC_KEY); //无限循环,直到用户键入ESC键,退出。

Uart_Printf('n Exit Uart0 Test!n');

}




串口程序:



/*********************************************************************************************

* File name: uart0.c

* Author: ZXL 

* Description: 在PC机通过串口0向终端发送一行字符(以回车键结束),开发板接收串口数据后,保存在数组中,再传回到PC端,通过终端回显。

* History: 2013.5.8

*********************************************************************************************/



#include 'def.h'

#include 'option.h'

#include '2440addr.h'     

#include '2440lib.h'



void uart0()

{undefined

U8 c,string_input[256];

U8 m=0;



Uart_Printf(' Please input words, then press Enter:n');

while(1)

{undefined

c=Uart_Getch(); //从终端接收一个字符

Uart_Printf('%c',c); //在终端显示用户输入的字符

if(c!='r')  string_input[m++]=c;   //将接收到的字符保存在一个数组里面

else

{undefined

string_input[m]=''; //收到回车符,表示字符输入结束,在字符串的末尾加上结束符

break;

}

}

dely(50);


Uart_Printf('n The words that you input are: n %sn',string_input); 

}


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

最新器件
精选电路图
  • CCD图像传感器在微光电视系统中的应用

  • 如何利用ESP8266制作一个简单的四轴飞行器

  • 离子检测器电路分析

  • 非常简单的150W功放电路图

  • 一个简单的警笛电路图

  • 使用NE555和磁簧开关的橱柜照明电路

    相关电子头条文章