你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

FreeRTOS V8.1.2移植到Cortex-M0(STM32F042C6)

[复制链接]
Dylan疾风闪电 发布时间:2014-9-24 15:40
自己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了。
* i" q  V" j- e3 Z程序功能:* l# `2 T# I4 `- `  b
1.LED指示灯
1 Z5 \3 Z3 z/ F/ G6 e2.USART1 & USART2  中断接收,轮询发送- B* q$ X: [7 {5 C- f  O
3.CAN 中断接收,轮询发送& H% Z2 {* }' y7 ]. |  Y
 
  x4 o, a- u' c% F" i$ ?4.RTC
4 E! s4 q) ?$ l& k! m9 c# L + s* Q$ j4 j' |: E" p6 G
献上代码,请多指点。
6 H6 P6 F& w1 F) S$ j: g 
. q8 x2 [" b( T4 [3 L# e代码未经整理,比较乱,请各位看官见谅。(该文件可直接导入eclipse C/C++工程,方便浏览。)
! Z2 ~6 j2 @/ P- {0 w; ^/ m6 K' x FreeRTOS-STM32CM0-Demo.rar (592.1 KB, 下载次数: 855)
赞 收藏 4 评论19 发布时间:2014-9-24 15:40

举报

19个回答
今日头条 回答时间:2016-6-29 14:08:05
以前看到有帖子好像要改汇编? 要改吗?
alexsunmiu 回答时间:2016-3-8 09:19:55
software.c 貌似有几个变量未定义?
supercxy 回答时间:2018-12-20 16:56:59
学习一下,正打算移植进去使用
Dylan疾风闪电 回答时间:2014-9-24 16:00:26

RE:FreeRTOS V8.1.2移植到Cortex-M0(STM32F042C6)

移植很简单,核心是不断调整FreeRTOSConfig.h配置到合适的参数。" V. j( ~) F9 B9 d
--------------------------------------
  w, T& w" U# s8 s& z#define configUSE_PREEMPTION                                                1
3 ?# v6 b& M) A# f#define configUSE_IDLE_HOOK                                                        0 
9 Z8 j7 _4 E6 }- c$ F4 p. O1 `/ N#define configUSE_TICK_HOOK                                                        0 
2 b. ~8 ~  _& Q. k$ C#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 ) 
9 }5 T6 T5 n. [) s* u/ K#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
, s& O- V6 ~9 H' a& v* D#define configUSE_16_BIT_TICKS                                                0; @* ^/ E) b/ r
#define configIDLE_SHOULD_YIELD                                                1
! M0 p" \9 |% {/ S2 d  U#define configUSE_MUTEXES                                       1
+ [! H$ @: e, S) ]0 }( P; P#define configQUEUE_REGISTRY_SIZE                                        8
( {$ l# I3 m  F#define configCHECK_FOR_STACK_OVERFLOW                                0- S$ d+ ?7 ~; P; N; q) e! y: S
#define configUSE_RECURSIVE_MUTEXES                                        1
& N' u, M1 |$ x- z4 a( O! R#define configUSE_MALLOC_FAILED_HOOK                                0
3 S+ g$ `, {+ m; F; U8 o#define configUSE_APPLICATION_TASK_TAG                                0/ b4 i( p* G% t; l
#define configUSE_COUNTING_SEMAPHORES                                1
# f. F9 {- f  a1 C#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
: O' t" `! H5 u4 B! ?$ Y% M5 k#define configMAX_CO_ROUTINE_PRIORITIES                         2
4 k5 m2 S* z7 E/* 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
% d9 W" x5 U# H( ]9 e#define configTIMER_TASK_STACK_DEPTH                                ( 80 )
. I2 E, a) ?% g/ n  G+ b0 o/* Set the following definitions to 1 to include the API function, or zero
( ^; F: d5 l$ @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
1 l9 K3 C; n1 y* X7 S% @#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
6 [7 N- H- C( S1 \' L# j6 S3 V#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
, m' w, S7 m) q3 K  Theader file. */* X9 [/ F1 o, O/ a7 k
#define configASSERT( x )                                                         if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); }
沐紫 回答时间:2014-9-24 17:04:33

RE:FreeRTOS V8.1.2移植到Cortex-M0(STM32F042C6)

支持下
霹雳之火 回答时间:2014-9-25 08:25:22

RE:FreeRTOS V8.1.2移植到Cortex-M0(STM32F042C6)

谢谢分享
nawt 回答时间:2014-10-1 10:13:43

RE:FreeRTOS V8.1.2移植到Cortex-M0(STM32F042C6)

謝謝分享,學習一下freertos如何porting到其他stm板子上
亚古捷斯 回答时间:2015-1-13 16:52:59
多谢分享!
喵吉豆豆 回答时间:2015-10-21 19:15:49
正好需要,谢谢
涛哥2035 回答时间:2016-6-29 16:58:27
支持支持
lost1421 回答时间:2016-8-9 11:36:29
调试一下,试试看
shizi 回答时间:2017-7-28 13:06:02
顶一个
cloudmr 回答时间:2018-4-6 16:20:14
封小子 回答时间:2018-6-19 17:04:51
刚好需要,谢谢分享!
12下一页

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版