/*
串口查询接收任务
*/
static void UARTInterrupt_Handler(void *p_arg)
{
while(1)
{
//判断串口接收FIFO空标志位
if((UART2->UARTFlag & (0x1 << 6)) == 0)
{
//将接收到的数据发送出去
UartPollingSenddata(UART2,UART2->UARTRdDR & 0xff);
}
//延时1ms
vTaskDelay(1);
}
//注销当前任务
vTaskDelete(NULL);
}
/*
用户初始化
*/
void User_init(void)
{
// //设置串口2中断优先级
// eclic_irq_set_priority(UART2_IRQn, 2, 2);
// //设置串口2中断为向量表中断
// eclic_set_vmode(UART2_IRQn);
// //关联串口2中断函数
// __eclic_irq_set_vector(UART2_IRQn, (int32_t)vUARTInterrupt_Handler);
// //使能串口2中断
// eclic_irq_enable(UART2_IRQn);
//串口2配置为中断模式,波特率921600
// UARTInterruptConfig(UART2,UART_BaudRate921600);
//串口2配置为查询模式,波特率921600
UARTPollingConfig(UART2,UART_BaudRate921600);
UartPollingSenddata(UART2,'@');
UartPollingSenddata(UART2,'@');
UartPollingSenddata(UART2,'@');
}
/*
用户主程序任务
*/
static void User_main(void *p_arg)
{
//创建串口查询接收任务
xTaskCreate(UARTInterrupt_Handler,"UARTInterrupt Handler",280,NULL,6,NULL);
while (1)
{
//定时发送字符
UartPollingSenddata(UART2,'%');
//延时1000ms
vTaskDelay(1000);
}
//注销当前任务
vTaskDelete(NULL);
}
/**
* @brief
*
*/
int main(void)
{
hardware_default_init();
/*平台相关初始化*/
platform_init();
//用户初始化
User_init();
/* 版本信息 */
welcome();
/* 创建启动任务 */
xTaskCreate(task_init,"init task",280,NULL,4,NULL);
//创建用户主程序任务
xTaskCreate(User_main,"User main",280,NULL,4,NULL);
/* 启动调度,开始执行任务 */
vTaskStartScheduler();
while(1){}
}