现在STM32越来越普及,快成入门首选了,walnutcy
有不少网友问我要去年弄的那个最小系统上跑的FreeRTOS,
一直没有答复,东西不好找,换了城市,换了工作,更是换了个人电脑硬盘,很多东西都还是当时存了备份,新工作中不占使用这些,都忘掉放在哪了。walnutcy
https://static.assets-stash.eet-china.com/album/old-resources/2009/10/29/dd61e273-f114-4935-827c-7a349cca8ffb.rarwalnutcy
晚上没事,把旧硬盘找出来,最后翻出了这个最简单的版本。
目录结构如下图所示:walnutcy
其只需要连接一个串口,内部使用freertos运行了三个任务,
主要是做做测试,其中有一个任务实现了简单的shell控制台功能。任务创建如下所示:walnutcy
// Walter 20080816walnutcy
xTaskCreate( vComTxTask1, ( signed portCHAR * ) "task 1", comSTACK_SIZE, NULL, 2, ( xTaskHandle * ) NULL );walnutcy
xTaskCreate( vComTxTask2, ( signed portCHAR * ) "task 2", comSTACK_SIZE, NULL, 1, ( xTaskHandle * ) NULL );walnutcy
xTaskCreate( vTaskComConsole, ( signed portCHAR * ) "COMConsole", 256, NULL,tskIDLE_PRIORITY , ( xTaskHandle * ) NULL );walnutcy
另一点,当时为了个人使用方便,只留下了最简单的OS代码,目录结构与标准的有小变动,这点请大家见谅。walnutcy
同时该系统演示了如何使用信号量来共享设备,如下walnutcy
void consolePutString(char *str)walnutcy
{
if(uartMutexHandle!=NULL)walnutcy
{walnutcy
if(xQueueTakeMutexRecursive(uartMutexHandle,(portTickType)10)==pdTRUE)
{walnutcy
while(*str)walnutcy
UartxPutCh(*str++);walnutcy
xQueueGiveMutexRecursive(uartMutexHandle);walnutcy
} walnutcy
}walnutcy
}walnutcy
串口采用了队列缓存机制,初学都也可以学习了解一下。
if( USART_GetITStatus( USARTx, USART_IT_RXNE ) == SET )
{
tmp = USART_ReceiveData(USARTx) & 0xFF;
uartx_rxBuffer[uartx_rxIndexIn++] = tmp;
if (uartx_rxIndexIn>=_MAX_UART_BUFFER_LEN) uartx_rxIndexIn=0;
}
对串口部分重新配置下,应该就可以在三合的那个小板上运行了。walnutcy
walnutcy_696810119 2009-10-31 21:58