📄 app.c
字号:
//===============================================================================================
//===============================================================================================
#include <app.h>
#include <board.h>
extern void SystemInitial(void);
void AT91F_DBGU_Printk( char *buffer)
{
while(*buffer != '\0')
{
while (!AT91F_US_TxReady((AT91PS_USART)AT91C_BASE_DBGU));
AT91F_US_PutChar((AT91PS_USART)AT91C_BASE_DBGU, *buffer++);
}
}
void AT91F_DBGU_Ready(void)
{
while (!(AT91C_BASE_DBGU->DBGU_CSR & AT91C_US_TXEMPTY));
}
void Send_reset(void)
{
void(*pfct)(void) = (void (*)(void) ) 0x00000000;
// Acknoledge the interrupt
// Mark the End of Interrupt on the AIC
AT91C_BASE_AIC->AIC_EOICR=0;
AT91F_DBGU_Ready();
// Jump in reset
pfct();
}
int AT91F_DBGU_Get( char *val)
{
if ((AT91F_US_RxReady((AT91PS_USART)AT91C_BASE_DBGU)) == 0) return (FALSE);
else
{
*val= AT91F_US_GetChar((AT91PS_USART)AT91C_BASE_DBGU);
return (TRUE);
}
}
void AT91F_DBGU_Frame( char *buffer)
{
unsigned char len;
for (len =0; buffer[len] != '\0'; len++){}
AT91F_US_SendFrame((AT91PS_USART)AT91C_BASE_DBGU, buffer,len,0,0);
}
void Init_DBGU()
{
// Enable DBGU Clock
//AT91F_DBGU_CfgPMC(); // DBGU is always clocked
// Open PIO for DBGU
AT91F_DBGU_CfgPIO();
AT91F_US_Configure ((AT91PS_USART) AT91C_BASE_DBGU,
AT91C_MASTER_CLOCK,
AT91C_US_ASYNC_MODE, // mode Register to be programmed
AT91C_BAUDRATE_115200, // baudrate to be programmed
0); // timeguard to be programmed
((AT91PS_USART)AT91C_BASE_DBGU)->US_CR = AT91C_US_RXEN | AT91C_US_TXEN;
AT91F_DBGU_Printk("\n\n\r======================================\n\r");
AT91F_DBGU_Printk("AT91SAM7X u/COS-II ver2.80 port to IAR\n\r");
AT91F_DBGU_Printk("======================================\n\r");
//TRACE_INFO("\n\n\r======================================\n\r");
//TRACE_INFO("AT91SAM7X u/COS-II ver2.80 port to IAR\n\r");
//TRACE_INFO("======================================\n\r");
}
//------------------------------------------------------------------------------------------------------
void Init_all()
{
AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA ) ; // First, enable the clock of the PIO
SPEED=250;
pRxdt=RXDT;
AT91C_USAR_BAUD = 115200;
BSP_Init();
Init_DBGU();
SystemInitial();
SPIK=AT91C_BASE_SPI0;
}
//-------------------------------------------------------------------------------------------------------
//main function
//
//-------------------------------------------------------------------------------------------------------
int main(void)
{//* start
INT8U err;
OSInit(); /* Initialize "uC/OS-II, The Real-Time Kernel" */
Init_all();
//first task
err=OSTaskCreateExt(US0Task,
(void *)0,
(OS_STK *)&US0TaskStk[TASKUS0_STK_SIZE-1],
TASK_US0_PRIO,
TASK_US0_PRIO,
(OS_STK *)&US0TaskStk[0],
TASKUS0_STK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
err=OSTaskCreateExt(US1Task,
(void *)0,
(OS_STK *)&US1TaskStk[TASKUS1_STK_SIZE-1],
TASK_US1_PRIO,
TASK_US1_PRIO,
(OS_STK *)&US1TaskStk[0],
TASKUS1_STK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
#if OS_TASK_NAME_SIZE > 11
OSTaskNameSet(TASK_US0_PRIO, "Start Task", &err);
#endif
#if OS_TASK_NAME_SIZE > 14
OSTaskNameSet(OS_IDLE_PRIO, "uC/OS-II Idle", &err);
#endif
#if (OS_TASK_NAME_SIZE > 14) && (OS_TASK_STAT_EN > 0)
OSTaskNameSet(OS_STAT_PRIO, "uC/OS-II Stat", &err);
#endif
OSStart(); /* Start multitasking (i.e. give control to uC/OS-II) */
}//* end
static void US0Task(void *p_arg){
(void)p_arg;
for(;;){
AT91F_PIO_ClearOutput( AT91C_BASE_PIOB, LED2);
OSTimeDlyHMSM(0, 0, 0, SPEED);
AT91F_PIO_SetOutput( AT91C_BASE_PIOB, LED2 ) ;
OSTimeDlyHMSM(0, 0, 0, SPEED);
AT91F_DBGU_Printk("AT91SAM7X u/COS-II ver2.80 port to IAR by US0Task0\n\r");
}
}
static void US1Task(void *p_arg){
(void)p_arg;
for(;;){
AT91F_PIO_ClearOutput( AT91C_BASE_PIOB, LED1);
OSTimeDlyHMSM(0, 0, 0, SPEED);
AT91F_PIO_SetOutput( AT91C_BASE_PIOB, LED1 ) ;
OSTimeDlyHMSM(0, 0, 0, SPEED);
AT91F_DBGU_Printk("AT91SAM7X u/COS-II ver2.80 port to IAR by US1Task1\n\r");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -