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

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

[复制链接]
Dylan疾风闪电 发布时间:2014-9-24 15:40
自己DIY了一块STM32F042C6的DemoBoard。2 x8 F$ K  r- C3 f
一天突发奇想,想要把FreeRTOS移植到板子上。7 H# V- N: W! _7 F; ?
头一次移植,苦恼于网上找不断Keil CM0 下移植的直接例程,程序调试也老是在xTaskCreate失败。
( Z3 L4 j  G7 x5 J; y& T, x$ @ 
$ i4 h, r6 m! H( ^1 x2 R( \今天程序终于调好了,能够开始跑FreeRTOS了。
4 J/ s' U( ^. u% _程序功能:
+ h  G/ F2 N7 ^( L+ e1.LED指示灯
/ L; T  c0 s! M! k3 l& k# H, F2.USART1 & USART2  中断接收,轮询发送( Y1 k8 T$ P5 k! b% c
3.CAN 中断接收,轮询发送
7 }8 l7 K, d. ^! g/ T. e 
+ i' }  p( T0 t5 f- i4.RTC
- _9 y$ y' ^! i3 @4 a " [+ s! |1 }1 F
献上代码,请多指点。% u9 z4 a3 g. N8 B- p0 n
 
7 b$ I- ]; G' Y% A: W; u5 q9 [# n代码未经整理,比较乱,请各位看官见谅。(该文件可直接导入eclipse C/C++工程,方便浏览。)8 @, k: q4 Q! @) W) C& B/ p, R9 d# u9 F
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配置到合适的参数。9 O( o- `+ C4 g; A* j5 ?
--------------------------------------* m$ m$ n0 r1 L  F" q  ~
#define configUSE_PREEMPTION                                                1
7 _$ v4 P; R+ |#define configUSE_IDLE_HOOK                                                        0 9 x  Y: g& g8 r7 @
#define configUSE_TICK_HOOK                                                        0 
" E  ]- D* H- u" u#define configCPU_CLOCK_HZ                                                        ( ( uint32_t ) 48000000 )
! K( Y& A, ^* }7 z#define configTICK_RATE_HZ                                                        ( ( TickType_t ) 1000 ) ) ~5 O  `& E* x5 y4 Y! i
#define configMAX_PRIORITIES                                                ( ( unsigned portBASE_TYPE ) 10 ) 
1 ~1 G# k3 \7 v* l1 X#define configMINIMAL_STACK_SIZE                                        ( ( unsigned short ) 60 ) 8 o& l) y, W: ~
#define configTOTAL_HEAP_SIZE                                                ( ( size_t ) ( 3400 ) )                        /* 计算入Keil-ZI. */
9 v$ `+ r9 g' o& ~#define configMAX_TASK_NAME_LEN                                                ( 16 )# l; a* e3 K% b+ `+ b6 ^1 w
#define configUSE_TRACE_FACILITY                                        1* M: T2 U: @$ g/ j3 b% o
#define configUSE_16_BIT_TICKS                                                08 a0 q& L: p! R# W
#define configIDLE_SHOULD_YIELD                                                1, Q" s5 S5 |0 d& N
#define configUSE_MUTEXES                                       16 x' H+ o) f/ P5 g9 w2 y, u8 _
#define configQUEUE_REGISTRY_SIZE                                        85 M% P5 z3 ]. P  o( ]3 r% E
#define configCHECK_FOR_STACK_OVERFLOW                                0
  x' N9 e+ e/ R9 h! f#define configUSE_RECURSIVE_MUTEXES                                        1
! ^9 _0 j. q2 C; t# ?- J/ K#define configUSE_MALLOC_FAILED_HOOK                                0; y  ], b0 \/ B
#define configUSE_APPLICATION_TASK_TAG                                07 s" V! \: i# I
#define configUSE_COUNTING_SEMAPHORES                                1
; [& e: I# N6 T& X#define configGENERATE_RUN_TIME_STATS                                05 U. |! }4 \' y
/* Co-routine definitions. */
2 o! C9 O! z( p$ ]2 I: A1 O#define configUSE_CO_ROUTINES                                                 09 r! F4 g, B, l; I' [  n9 R, S* w
#define configMAX_CO_ROUTINE_PRIORITIES                         2
+ b6 i( ?& P4 `6 c/* Software timer definitions. */: m4 d  |  x9 e  X8 x5 {* m
#define configUSE_TIMERS                                                        1
  O4 {: o  k& S#define configTIMER_TASK_PRIORITY                                        ( 2 )
/ @2 {, U& c: ]#define configTIMER_QUEUE_LENGTH                                        5" _4 N: D9 _& p( |5 A
#define configTIMER_TASK_STACK_DEPTH                                ( 80 )! H* c- f7 f$ i# v9 c
/* Set the following definitions to 1 to include the API function, or zero
: R2 d: z8 G" xto exclude the API function. */
8 R7 l3 ]5 T# o% F2 p  {3 w- L4 C#define INCLUDE_vTaskPrioritySet                                        1
- s' O4 t  l$ X& t1 h3 I#define INCLUDE_uxTaskPriorityGet                                        1$ n3 P% A  z$ L: S; M" C
#define INCLUDE_vTaskDelete                                                        1
9 T0 J6 D% I- f/ p$ e6 O  B. z2 d#define INCLUDE_vTaskCleanUpResources                                1, h4 ^8 U" _. o+ M; Y+ o% I  C
#define INCLUDE_vTaskSuspend                                                15 O7 t( j. q* ?
#define INCLUDE_vTaskDelayUntil                                                1! o7 Y. o* D+ H8 H
#define INCLUDE_vTaskDelay                                                        1
$ E7 A' o3 C1 f% c1 X( Q  j
8 F9 J. p4 v( o& x7 k% b& W0 R/* Normal assert() semantics without relying on the provision of an assert.h% e5 {% ~8 g) e0 C  ^
header file. */6 t0 h! p; c1 E5 g
#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 手机版