|
发表于 2015-12-7 15:13:01
只看该作者
地板
现在已经实现了主机连接从机,并成功发送数据到从机。然而从机确无法向主机发送数据,主要是通过UART发送的数据从机收不到。从机的UART输入是参考主机进行配置的,P00_UART0_TXD_PIN_CTRL,P17_UART0_RXD_PIN_CTRL。
uart_init(QN_DEBUG_UART, USARTx_CLK(0), UART_9600);
uart_tx_enable(QN_DEBUG_UART, MASK_ENABLE);
uart_rx_enable(QN_DEBUG_UART, MASK_ENABLE);
并且可以成功调用初始化程序:
void app_uart_init(void)
{
#if (QN_DEMO_MENU || QN_UART_INT)
app_uart_env.len = 0;
uart_read(QN_DEBUG_UART, app_uart_env.buf_rx, 1, app_uart_rx_done);
#endif
}
“QN_UART_INT”是我自定义参数,在“QN_DEMO_MENU”(主机使用参数)设定的地方也都进行了设置。然而通过串口向从机发送数据时,从机的“app_uart_data_ind_handler”都没有产生反应:
#if (QN_DEMO_MENU || QN_EACI || QN_UART_INT)
/**
****************************************************************************************
* @brief Handles UART data indication.
*
* @param[in] msgid APP_SYS_UART_DATA_IND
* @param[in] param Pointer to struct app_uart_data_ind
* @param[in] dest_id TASK_APP
* @param[in] src_id TASK_APP
*
* @return If the message was consumed or not.
****************************************************************************************
*/
static int app_uart_data_ind_handler(ke_msg_id_t const msgid, struct app_uart_data_ind const *ind,ke_task_id_t const dest_id, ke_task_id_t const src_id)
{
switch (ke_state_get(dest_id))
{
case APP_INIT:
break;
case APP_IDLE:
default:
#if QN_EACI
app_eaci_msg_hdl((src_id >> 8) & 0xFF,
src_id & 0xFF,
ind->len,
ind->data);
#elif QN_DEMO_MENU
if (ind->len != 0)
{
memcpy(app_env.input, ind->data, ind->len);
app_menu_hdl();
}
#elif QN_UART_INT
if (ind->len != 0)
{
memcpy(app_env.input, ind->data, ind->len);
app_uart_hdl();
}
#endif
break;
}
#if (QN_EACI&&(EACI_MSG_BUFFER_EN==TRUE))
if (eaci_msg_buf_used == EACI_BUF_DEEP) {
eaci_trans_init();
}
if (eaci_msg_buf_used) {
eaci_msg_buf_used--;
}
return (KE_MSG_NO_FREE);
#else
return (KE_MSG_CONSUMED);
#endif
}
#endif
请问UART设置部分有哪些地方是需要特别注意的? |
|