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

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

[复制链接]
Dylan疾风闪电 发布时间:2014-9-24 15:40
自己DIY了一块STM32F042C6的DemoBoard。
% X- F7 A! c+ y( M$ x$ w7 I一天突发奇想,想要把FreeRTOS移植到板子上。
% J+ X: Y0 Y( ~! Y头一次移植,苦恼于网上找不断Keil CM0 下移植的直接例程,程序调试也老是在xTaskCreate失败。
! E, Z" R4 Q7 E1 H0 u2 {+ V 
$ X+ s' @, ^4 w今天程序终于调好了,能够开始跑FreeRTOS了。
  r7 q+ \/ T9 T: [& b" I, d' h程序功能:0 t% e3 B: x! C7 d0 q
1.LED指示灯
) U% [3 r1 Y' v* z3 L; S0 W2.USART1 & USART2  中断接收,轮询发送/ `( i8 O. ~3 a, _
3.CAN 中断接收,轮询发送# Q' w; J0 I2 V, ?
 
8 f& w) x" d4 W" |4.RTC
( z) Y" O. h0 W7 M9 A7 U: }9 }$ f " C0 `, r) |( ~* l7 n7 ?9 F
献上代码,请多指点。
& k: w2 l1 z; P/ c) M 
3 o& S- S2 p+ e; K2 e0 A代码未经整理,比较乱,请各位看官见谅。(该文件可直接导入eclipse C/C++工程,方便浏览。)" f5 O$ j) d7 b6 |$ m
FreeRTOS-STM32CM0-Demo.rar (592.1 KB, 下载次数: 849)
收藏 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配置到合适的参数。
( }8 o" D* J) a$ _--------------------------------------8 e/ A6 h- y* a9 @
#define configUSE_PREEMPTION                                                1
7 n& u8 q6 H& v+ T( A) B1 r$ P, J#define configUSE_IDLE_HOOK                                                        0 
& F5 O5 Y4 s8 ?! k+ k- L#define configUSE_TICK_HOOK                                                        0 ! u- Q& n7 A3 Y9 @% b& l, B
#define configCPU_CLOCK_HZ                                                        ( ( uint32_t ) 48000000 )
) P. r7 w0 j; G#define configTICK_RATE_HZ                                                        ( ( TickType_t ) 1000 ) + ]8 J8 Y9 G+ u5 m7 H
#define configMAX_PRIORITIES                                                ( ( unsigned portBASE_TYPE ) 10 ) " x0 y7 Q3 h: `
#define configMINIMAL_STACK_SIZE                                        ( ( unsigned short ) 60 ) 
& Z- ~( b& _) J+ H. C2 m#define configTOTAL_HEAP_SIZE                                                ( ( size_t ) ( 3400 ) )                        /* 计算入Keil-ZI. */+ S2 O8 C; R# K* s5 M
#define configMAX_TASK_NAME_LEN                                                ( 16 )
* E! j3 l) f+ g1 O#define configUSE_TRACE_FACILITY                                        1
& J1 M- S+ X8 z& |3 s#define configUSE_16_BIT_TICKS                                                0, c% ]. Z: p' g4 b& u) P  A  ?
#define configIDLE_SHOULD_YIELD                                                1
/ Y% P7 X! k& g. v* ?5 V#define configUSE_MUTEXES                                       1
- v3 m0 T! |8 c' {#define configQUEUE_REGISTRY_SIZE                                        8
( v2 I/ X; ^( M6 H+ M% X#define configCHECK_FOR_STACK_OVERFLOW                                0
) J' o: y+ @$ a9 J9 }3 M#define configUSE_RECURSIVE_MUTEXES                                        1
) O. p" S2 U/ H- e$ g#define configUSE_MALLOC_FAILED_HOOK                                0; p+ h8 j- V  {8 H( f- _
#define configUSE_APPLICATION_TASK_TAG                                0
' T8 L# s9 f% y, }+ N$ ~#define configUSE_COUNTING_SEMAPHORES                                1) r0 k, Z+ [- i+ y3 W3 `, p8 X
#define configGENERATE_RUN_TIME_STATS                                0
: ]  v, }' b" ~! |. g( W5 F/* Co-routine definitions. */
1 \0 b, {! J' y& J#define configUSE_CO_ROUTINES                                                 0; w6 [2 c9 t& a3 m9 h! @# I# b
#define configMAX_CO_ROUTINE_PRIORITIES                         2% v/ N5 g3 s# ?
/* Software timer definitions. */
- X  N! l! Q7 m( N#define configUSE_TIMERS                                                        1
& Y' A2 e/ p' N, k% b0 t: c6 l#define configTIMER_TASK_PRIORITY                                        ( 2 )7 u! ]/ c8 Z4 a, `5 x
#define configTIMER_QUEUE_LENGTH                                        5
7 s. G  ]. V8 V# I# i& o1 k#define configTIMER_TASK_STACK_DEPTH                                ( 80 )# f# m. b! d7 X! t  |
/* Set the following definitions to 1 to include the API function, or zero
5 O7 _& ?7 @1 j) Uto exclude the API function. */7 n0 S/ [% Y$ z  q3 ?/ D, H1 f
#define INCLUDE_vTaskPrioritySet                                        1! W/ P$ `  m9 o( N+ F8 Q% R
#define INCLUDE_uxTaskPriorityGet                                        1. X) n/ C, E* S# f6 U( W8 K
#define INCLUDE_vTaskDelete                                                        1
  z3 a' d* S- w$ T#define INCLUDE_vTaskCleanUpResources                                1: q0 C$ J3 o6 }
#define INCLUDE_vTaskSuspend                                                18 E  t& N! e0 c" d
#define INCLUDE_vTaskDelayUntil                                                1! l" i2 j( L- q' F0 ?4 t
#define INCLUDE_vTaskDelay                                                        1
; G7 L3 H4 R- L9 O% o6 G0 U3 m. y
/* Normal assert() semantics without relying on the provision of an assert.h8 O7 M3 {0 b& [  C9 p& g( S
header file. */
- Q# n; W: W, z- y  _. Y( }#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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版