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

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

[复制链接]
Dylan疾风闪电 发布时间:2014-9-24 15:40
自己DIY了一块STM32F042C6的DemoBoard。% _; U6 h1 v' k  I" q. g
一天突发奇想,想要把FreeRTOS移植到板子上。5 {7 W$ K- }0 C0 O/ C
头一次移植,苦恼于网上找不断Keil CM0 下移植的直接例程,程序调试也老是在xTaskCreate失败。
0 x- F1 Q! b) m 
) o7 Q/ C& q$ |# i, _3 u7 A& i今天程序终于调好了,能够开始跑FreeRTOS了。; g: S, O) s8 i, k
程序功能:- s) k& t$ \) z- v' K& C  v
1.LED指示灯/ _7 W- v* r) i
2.USART1 & USART2  中断接收,轮询发送
' z9 H* ]4 r8 ^1 d3.CAN 中断接收,轮询发送
. T) R1 D: h3 I4 F 4 h: @( b" p$ @7 y
4.RTC
; n; z2 M' P- i( j 
" x" |3 x2 ~% B: e! ?献上代码,请多指点。
6 p* t5 L0 D1 v1 D   c& _, c+ v0 N5 J9 ?0 C1 u
代码未经整理,比较乱,请各位看官见谅。(该文件可直接导入eclipse C/C++工程,方便浏览。)
/ v2 ]: b  d" w" z4 W) V, p 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配置到合适的参数。
* Q" r# e# }7 M4 W" k--------------------------------------( v% t- ^, G/ K+ X1 Q
#define configUSE_PREEMPTION                                                1
" c" t  `* r# t2 o#define configUSE_IDLE_HOOK                                                        0 
" ~7 [3 }6 W1 D  J2 S#define configUSE_TICK_HOOK                                                        0 2 l" B3 z( N) O( K( A2 f. i
#define configCPU_CLOCK_HZ                                                        ( ( uint32_t ) 48000000 )
! Y2 \7 Y6 p3 I0 x* B9 r#define configTICK_RATE_HZ                                                        ( ( TickType_t ) 1000 ) 
$ s, R) E- v* S& C4 N6 H#define configMAX_PRIORITIES                                                ( ( unsigned portBASE_TYPE ) 10 ) & d+ T/ Y0 P& Q* H$ O) q
#define configMINIMAL_STACK_SIZE                                        ( ( unsigned short ) 60 ) 
: B  |( a# p4 C; t* `! i#define configTOTAL_HEAP_SIZE                                                ( ( size_t ) ( 3400 ) )                        /* 计算入Keil-ZI. */5 F' H3 A# l/ n, H1 N" B5 ]) l
#define configMAX_TASK_NAME_LEN                                                ( 16 )
9 K, h* {7 n: n#define configUSE_TRACE_FACILITY                                        1. U& P. I0 J( W* Z& d
#define configUSE_16_BIT_TICKS                                                0( M9 T: `+ ]% Z8 ~: @+ V
#define configIDLE_SHOULD_YIELD                                                1
* o# ~" z5 X, R6 ?#define configUSE_MUTEXES                                       1
: o: J: D2 ^7 ~8 @+ J9 p$ @: ?#define configQUEUE_REGISTRY_SIZE                                        8( o5 |3 D% ^3 F. t1 H" n# L
#define configCHECK_FOR_STACK_OVERFLOW                                0
: F0 n+ u9 v1 L" I! s8 J#define configUSE_RECURSIVE_MUTEXES                                        1+ b$ x$ [" P" D1 _/ r
#define configUSE_MALLOC_FAILED_HOOK                                0( Q% J& S: C0 Y" g6 t$ v
#define configUSE_APPLICATION_TASK_TAG                                07 X2 s  @7 j$ F
#define configUSE_COUNTING_SEMAPHORES                                1" e/ d1 d% W* L. w$ c
#define configGENERATE_RUN_TIME_STATS                                08 L# m( \$ B$ f' |! D
/* Co-routine definitions. */& x* X1 |6 A: ]4 j# B, S. [
#define configUSE_CO_ROUTINES                                                 0
4 O, m0 k) x. V# C#define configMAX_CO_ROUTINE_PRIORITIES                         2( V  s% B* C; R% q+ X
/* Software timer definitions. */7 a3 E, V4 X. e
#define configUSE_TIMERS                                                        1
+ l6 j+ }% ]# W! s% L6 d; B  [# z#define configTIMER_TASK_PRIORITY                                        ( 2 )4 @; c+ J* c! J! `. g/ Q2 R
#define configTIMER_QUEUE_LENGTH                                        5& ]) Z$ m1 J- T: x: [
#define configTIMER_TASK_STACK_DEPTH                                ( 80 )
) T$ C; M, {- W1 q/* Set the following definitions to 1 to include the API function, or zero2 c9 f( ^  _: n' D8 l' ~
to exclude the API function. */
  k! M; ~: l) C, u#define INCLUDE_vTaskPrioritySet                                        1/ K+ {; e4 D* M: j& M
#define INCLUDE_uxTaskPriorityGet                                        10 C$ h  B8 {1 K1 \) v8 `- R
#define INCLUDE_vTaskDelete                                                        1
2 P* b" Y+ p7 _#define INCLUDE_vTaskCleanUpResources                                1' [( a! V5 w) H" t' ^8 p
#define INCLUDE_vTaskSuspend                                                1
1 r& j; K: T1 \; ]9 A#define INCLUDE_vTaskDelayUntil                                                1
, h5 N% H5 m' d1 n6 w6 X#define INCLUDE_vTaskDelay                                                        1
4 `  N9 }, u' i% \2 g" r/ U
* u3 z& a4 K# T0 m  s/ ]& ?/* Normal assert() semantics without relying on the provision of an assert.h# i. A( W, u8 ?6 r! x
header file. */
& O" V# }: v8 X0 \* j) M) r- N#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 手机版