CUBE支持生成ECLISPE+AC6的工程了,那个配色可以修改的更好看,但对ECLIPSE不熟悉,不知道该如何用STLINK调试,现在暂时放弃了。 本帖最后由 any012 于 2017-1-20 16:35 编辑
watershade 发表于 2017-1-19 21:32
我的做法类似楼上你的osDelay具体是为什么。你既然用idle中断,那么你是如何将数据传送到邮箱的。
我的做 ...
我现在是中断接收数据后放到数组里,数组的第一位放数据的长度。
然后通过消息邮箱发送给任务。
任务通过消息邮箱后,先读出长度,然后依此复制过来存放到任务的数组里。再调用发送函数。
现在担心复制的过程中,中断又收到新的数据将原数组更新。
我还不懂内存池,现在中断接收存放在了个全局变量里。
/* usart1Task function */
void usart1Task(void const * argument)
{
/* USER CODE BEGIN usart1Task */
uint8_t uart1TxBuff;
uint8_t *pMail;
osEvent event;
uint8_t i;
uint8_t txLength;
/* Infinite loop */
for(;;)
{
event = osMailGet(mailQ01Handle, 0x00);
if(event.status == osEventMail)
{
pMail =event.value.p;
txLength = *(pMail++);
for(i = 0; i < txLength; i++)
uart1TxBuff = *(pMail++);
HAL_UART_Transmit_DMA(&huart1,uart1TxBuff,txLength);
HAL_UART_Receive_DMA(&huart1, uart1RxBuff+1, RXBUFFLEN-1);
}
// osDelay(100);
}
/* USER CODE END usart1Task */
}
我的问题找到了
页:
1
[2]