|
自己DIY了一块STM32F042C6的DemoBoard。" F* M- S9 t& \/ h6 p' U+ c3 Y$ P 一天突发奇想,想要把FreeRTOS移植到板子上。6 t7 w5 j" P8 R. n8 L1 \+ K* V y 头一次移植,苦恼于网上找不断Keil CM0 下移植的直接例程,程序调试也老是在xTaskCreate失败。4 ~4 s! H) H1 j: y) M; A ) w6 l" H, o+ G- u 今天程序终于调好了,能够开始跑FreeRTOS了。 程序功能:* l# `2 T# I4 `- ` b 1.LED指示灯 2.USART1 & USART2 中断接收,轮询发送- B* q$ X: [7 {5 C- f O 3.CAN 中断接收,轮询发送& H% Z2 {* }' y7 ]. | Y 4.RTC + s* Q$ j4 j' |: E" p6 G 献上代码,请多指点。 代码未经整理,比较乱,请各位看官见谅。(该文件可直接导入eclipse C/C++工程,方便浏览。)
FreeRTOS-STM32CM0-Demo.rar
(592.1 KB, 下载次数: 855)
|
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
小白也能明白的STM32的低功耗与唤醒机制
STM32系统中2种数据掉电保护的方法
分享STM32F051中文参考手册(重制书签版)
AI工具训练营-用ChatGPT解决HID Keyboard实现的问题
STM32固件库分享,超全系列整理
STM32小白入门指南:从基础到OTA实现方案
STM32超详细学习笔记
新手必看!STM32单片机应该怎么学?
如果你解决了这些问题,就可以直接学STM32
微信公众号
手机版
RE:FreeRTOS V8.1.2移植到Cortex-M0(STM32F042C6)
--------------------------------------
#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0
#define configCPU_CLOCK_HZ ( ( uint32_t ) 48000000 )! k7 U0 q" W" q. F' t% J& q- O. A8 l9 M
#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) 8 E0 F' k% ^( b. A7 h9 I
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 10 )
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 60 ) }% ?7 C) ~' p9 `0 [ N
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 3400 ) ) /* 计算入Keil-ZI. *// R$ _6 W& L" P" _, N1 O, J+ T
#define configMAX_TASK_NAME_LEN ( 16 ). n8 [' O3 H; z4 R+ A- \ P3 V# i
#define configUSE_TRACE_FACILITY 1
#define configUSE_16_BIT_TICKS 0; @* ^/ E) b/ r
#define configIDLE_SHOULD_YIELD 1
#define configUSE_MUTEXES 1
#define configQUEUE_REGISTRY_SIZE 8
#define configCHECK_FOR_STACK_OVERFLOW 0- S$ d+ ?7 ~; P; N; q) e! y: S
#define configUSE_RECURSIVE_MUTEXES 1
#define configUSE_MALLOC_FAILED_HOOK 0
#define configUSE_APPLICATION_TASK_TAG 0/ b4 i( p* G% t; l
#define configUSE_COUNTING_SEMAPHORES 1
#define configGENERATE_RUN_TIME_STATS 0' m E+ t7 X- l8 G
/* Co-routine definitions. */* w3 A4 S; R9 a3 C7 o) ~+ ^; W0 g
#define configUSE_CO_ROUTINES 0
#define configMAX_CO_ROUTINE_PRIORITIES 2
/* Software timer definitions. */2 K# _0 u1 p7 f
#define configUSE_TIMERS 1% \' T& D6 `6 L5 M4 s; n; I, V
#define configTIMER_TASK_PRIORITY ( 2 )& A( b4 H+ w9 X* h8 a
#define configTIMER_QUEUE_LENGTH 5
#define configTIMER_TASK_STACK_DEPTH ( 80 )
/* Set the following definitions to 1 to include the API function, or zero
to exclude the API function. */9 f. S4 o d6 ^1 Z! y
#define INCLUDE_vTaskPrioritySet 11 `& ]. U: a2 ?0 h
#define INCLUDE_uxTaskPriorityGet 1% h$ m" n6 G# e7 p7 U
#define INCLUDE_vTaskDelete 1
#define INCLUDE_vTaskCleanUpResources 1: l! ` | O, W6 m- g
#define INCLUDE_vTaskSuspend 1$ y/ m: w. P" t9 c3 X. |% p8 `& ^
#define INCLUDE_vTaskDelayUntil 1
#define INCLUDE_vTaskDelay 1# N( T T6 A6 j1 ]" r! F a0 b
# ]( U) @2 k# | f; R7 p
/* Normal assert() semantics without relying on the provision of an assert.h
header file. */* X9 [/ F1 o, O/ a7 k
#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); }
RE:FreeRTOS V8.1.2移植到Cortex-M0(STM32F042C6)
RE:FreeRTOS V8.1.2移植到Cortex-M0(STM32F042C6)
RE:FreeRTOS V8.1.2移植到Cortex-M0(STM32F042C6)