|
本帖最后由 thinkingpadcui 于 2019-6-28 16:25 編輯
stm32031c6t6是一款小容量的,少資源的M0內(nèi)核單片機(jī),4K RAM ,32K flash。
搞了兩天終于把freeRTOSTA操作系統(tǒng)完美移植到該單片機(jī)上面。
目前測試點(diǎn)燈和NRF24L01發(fā)送接收數(shù)據(jù)都是OK。
UARST打印printf目前沒有測試成功 ,該單片機(jī)只有一個(gè)USART.這個(gè)是個(gè)小問題。后面解決了給大家分享一下。
僅供參考,希望能幫到正在學(xué)習(xí)os的朋友
0.png (9.44 KB, 下載次數(shù): 53)
下載附件
2019-6-27 17:48 上傳
單片機(jī)源程序如下:
- /* Includes ------------------------------------------------------------------*/
- #include "include.h"
- //任務(wù)優(yōu)先級
- #define START_TASK_PRIO 1
- //任務(wù)堆棧大小
- #define START_STK_SIZE 50
- //任務(wù)句柄
- TaskHandle_t StartTask_Handler;
- //任務(wù)函數(shù)
- void start_task(void *pvParameters);
- //任務(wù)優(yōu)先級
- #define LED0_TASK_PRIO 2
- //任務(wù)堆棧大小
- #define LED0_STK_SIZE 50
- //任務(wù)句柄
- TaskHandle_t LED0Task_Handler;
- //任務(wù)函數(shù)
- void led0_task(void *pvParameters);
- //任務(wù)優(yōu)先級
- #define LED1_TASK_PRIO 3
- //任務(wù)堆棧大小
- #define LED1_STK_SIZE 50
- //任務(wù)句柄
- TaskHandle_t LED1Task_Handler;
- //任務(wù)函數(shù)
- void led1_task(void *pvParameters);
- ////任務(wù)優(yōu)先級
- //#define FLOAT_TASK_PRIO 4
- ////任務(wù)堆棧大小
- //#define FLOAT_STK_SIZE 128
- ////任務(wù)句柄
- //TaskHandle_t FLOATTask_Handler;
- ////任務(wù)函數(shù)
- //void float_task(void *pvParameters);
- int main(void)
- {
- MCU_Init();
- // NRF24L01_Init();
- delay_init(); //延時(shí)函數(shù)初始化
- // uart_init(115200); //初始化串口
- NRF24L01_Init();
- //創(chuàng)建開始任務(wù)
- xTaskCreate((TaskFunction_t )start_task, //任務(wù)函數(shù)
- (const char* )"start_task", //任務(wù)名稱
- (uint16_t )START_STK_SIZE, //任務(wù)堆棧大小
- (void* )NULL, //傳遞給任務(wù)函數(shù)的參數(shù)
- (UBaseType_t )START_TASK_PRIO, //任務(wù)優(yōu)先級
- (TaskHandle_t* )&StartTask_Handler); //任務(wù)句柄
- vTaskStartScheduler(); //開啟任務(wù)調(diào)度
- }
- //開始任務(wù)任務(wù)函數(shù)
- void start_task(void *pvParameters)
- {
- // taskENTER_CRITICAL(); //進(jìn)入臨界區(qū)
- //創(chuàng)建LED0任務(wù)
- xTaskCreate((TaskFunction_t )led0_task,
- (const char* )"led0_task",
- (uint16_t )LED0_STK_SIZE,
- (void* )NULL,
- (UBaseType_t )LED0_TASK_PRIO,
- (TaskHandle_t* )&LED0Task_Handler);
- //創(chuàng)建LED1任務(wù)
- xTaskCreate((TaskFunction_t )led1_task,
- (const char* )"led1_task",
- (uint16_t )LED1_STK_SIZE,
- (void* )NULL,
- (UBaseType_t )LED1_TASK_PRIO,
- (TaskHandle_t* )&LED1Task_Handler);
- //浮點(diǎn)測試任務(wù)
- // xTaskCreate((TaskFunction_t )float_task,
- // (const char* )"float_task",
- // (uint16_t )FLOAT_STK_SIZE,
- // (void* )NULL,
- // (UBaseType_t )FLOAT_TASK_PRIO,
- // (TaskHandle_t* )&FLOATTask_Handler);
- vTaskDelete(StartTask_Handler); //刪除開始任務(wù)
- //taskEXIT_CRITICAL(); //退出臨界區(qū)
- }
- //LED0任務(wù)函數(shù)
- void led0_task(void *pvParameters)
- {
- while(1)
- {
- test_RX_TX();
- // LED1_ON;
- // vTaskDelay(500);
- // LED1_OFF;
- vTaskDelay(1000);
- }
- }
- //LED1任務(wù)函數(shù)
- void led1_task(void *pvParameters)
- {
- while(1)
- {
- LED3_ON;
- vTaskDelay(800);
- LED3_OFF;
- vTaskDelay(800);
- }
- }
- //浮點(diǎn)測試任務(wù)
- //void float_task(void *pvParameters)
- //{
- // static float float_num=0.00;
- // while(1)
- // {
- // float_num+=0.01f;
- // printf("float_num的值為: %.4f\r\n",float_num);
- // vTaskDelay(1000);
- // }
- //}
復(fù)制代碼
全部資料51hei下載地址:
|
評分
-
查看全部評分
|