📄 app.c
字号:
#include "periph/stdc/std_c.h"
#include "periph/usart/lib_usart.h"
#include "periph/usart/usart.h"
#include "drivers/com/com.h"
#include "APP.h"
//* Include files for EB55
#ifdef AT91M55800
#include "eb55.h"
//#include "parts/m55800/reg_m55800.h"
#include "parts/m55800/lib_m55800.h"
#define MCKI 32000000 //Main colock 32MHz
#endif
#define DRIVER_MODE 0 // Driver mode
#define PERIPH_MODE 1 // Periphiral mode
#define BAUD_RATE 115200 //115200
#define BAUDRATE_cd (MCKI/(BAUD_RATE*16) // CD = ?
//*----------------------------------------------------------------------------
//* Function Name : LED_flesh
//* Object :
//* Input Parameters : none
//* Output Parameters : none
//*----------------------------------------------------------------------------
void LED_flesh(void)
{
u_int time,i; //time -> 延迟时间
at91_pio_write(&PIOB_DESC, //定义外围PIO的描述符
LED_MASK, //根据EB55的硬件定义的LED屏蔽
LED_OFF); //LED 关闭
//将PIOB口的8个LED引脚设置成输出
at91_pio_open(&PIOB_DESC,
LED_MASK,
PIO_OUTPUT); //输出状态
time=20;
for(i=LED1;i<=LED8;i<<=1) { //顺序从LED1~LED8
//将第i个LED置亮
at91_pio_write(&PIOB_DESC,
i,
LED_ON);
Delay(time);
//将第i个LED置灭
at91_pio_write(&PIOB_DESC,
i,
LED_OFF);
}
for(i=LED8;i>=LED1;i>>=1) { //顺序从LED8~LED1
at91_pio_write(&PIOB_DESC,
i,
LED_ON);
Delay(time);
at91_pio_write(&PIOB_DESC,
i,
LED_OFF);
}
}
//*----------------------------------------------------------------------------
//* Function Name : Read_UART
//* Object : USART input
//* Input Parameters : ch -> channels ...
//* Output Parameters : none
//*----------------------------------------------------------------------------
int Read_UART(unsigned short int ch) // ch -> channels ...
{
u_int Keyin;
at91_getch(&COM,&Keyin);
return Keyin;
}
//*----------------------------------------------------------------------------
//* Function Name : Init_USART
//* Object : USART init
//* Input Parameters : ch -> channels ...
//* mode -> 0:driver 1:peripheral
//* Output Parameters : none
//*----------------------------------------------------------------------------
void Init_USART(unsigned short int ch,char mode) /* ch -> channels ...
mode -> 0:driver 1:peripheral */
{
u_short cd_baud;
ComDesc COM; //定义串口通信的外围
if(ch == 0) //初始化USART0
COM.usart=&USART0_DESC; //指定USART0
if(ch == 1) //初始化USART0
COM.usart=&USART1_DESC; //指定USART1
//根据主时钟和波特率得到分频数
cd_baud=at91_baud_com(MCKI, //主时钟
BAUD_RATE); //波特率
if (mode == DRIVER_MODE)
{
at91_open_com(&COM,
COM_8_BIT| //8位数据位
COM_PAR_NONE| //无奇偶校验
COM_NBSTOP_1| //1位停止位
COM_FLOW_CONTROL_NONE, //无流控制
cd_baud); //分频数
at91_print(&COM,"\n\r >>> UART0 initialization ... \n\r");
}
else if (mode == PERIPH_MODE)
{
//打开外围USART0
at91_usart_open(&USART0_DESC, //指向外围USART0的描述符
US_ASYNC_MODE, //标准异步通信
cd_baud, //波特率常数
0); //没有timeguard
at91_usart_send_frame(&USART0_DESC,"\n\r >>> UART0 initialization ... \n\r",30);
}
}
//*----------------------------------------------------------------------------
//* Function Name : Delay
//* Object : delay by software
//* Input Parameters : none
//* Output Parameters : none
//*----------------------------------------------------------------------------
void Delay(u_int time) {
u_int i;
for(i=0;i<time*1000;i++);
}
//*----------------------------------------------------------------------------
//* Function Name : ARMTargetInit
//* Object : Initialize an ARM Target board
//* Input Parameters : none
//* Output Parameters : none
//*----------------------------------------------------------------------------
void ARMTargetInit(void)
{
#ifdef AT91_DEBUG_NONE
char str[] = "\n\n uCOS-II for AT91 TEST(Flash) : \n\r";
#else
char str[] = "\n\n uCOS-II for AT91 TEST(RAM) : \n\r";
#endif
//来回依次逐个亮灭
LED_flesh();
Init_USART(0,1); //初始化USART
at91_usart_send_frame(&USART0_DESC,(char *)str,30);
//Read_UART(0);
Delay(5);
}
#if 0
void _Link(void)
{
char CR[1] = {0x0D};
char LF[1] = {0x0A};
int i=0;
while(1)
{
at91_terminal_write(&terminal_1,&MSG[i][0]);
at91_terminal_write(&terminal_1,&MSG[i][1]);
if((int)(MSG[i][0])==0)
break;
i++;
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -