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

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

[复制链接]
Dylan疾风闪电 发布时间:2014-9-24 15:40
自己DIY了一块STM32F042C6的DemoBoard。% u; e/ q0 u/ \$ O" u
一天突发奇想,想要把FreeRTOS移植到板子上。
; X& U  g( _0 P' l! }头一次移植,苦恼于网上找不断Keil CM0 下移植的直接例程,程序调试也老是在xTaskCreate失败。& x% P% L# R! N# B* w4 g
 
/ V  Y- B/ ?8 n3 a* r今天程序终于调好了,能够开始跑FreeRTOS了。3 I8 E' ]( f% v: P0 A
程序功能:4 P; B& _) B' t/ u7 A
1.LED指示灯
9 [  a% A4 U7 K9 c% {, C0 E& J2.USART1 & USART2  中断接收,轮询发送( F; X' ]2 M' z
3.CAN 中断接收,轮询发送# c) }; C; x* n3 @+ x
 - J! k3 n; g" q. u
4.RTC( v# o& Y- L  h: i  e
 ; X& ~* H, x% b2 l7 c) P% U
献上代码,请多指点。& Q5 l' V0 o$ v* m. F6 z8 Q7 Q
 
; n& Z# S$ Y1 V9 \- p; u+ |& k, y8 |代码未经整理,比较乱,请各位看官见谅。(该文件可直接导入eclipse C/C++工程,方便浏览。)1 N& [" B, v/ q0 |& H
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 W+ t7 A
--------------------------------------
. |% l! X0 \8 |( m. s, p#define configUSE_PREEMPTION                                                1( {: T: O* r" C3 A% k! O
#define configUSE_IDLE_HOOK                                                        0 $ H9 T5 c" O: M
#define configUSE_TICK_HOOK                                                        0 
3 W9 j8 t1 N6 p2 M. }9 |#define configCPU_CLOCK_HZ                                                        ( ( uint32_t ) 48000000 )* ?. G) }% o9 S# X4 N7 `
#define configTICK_RATE_HZ                                                        ( ( TickType_t ) 1000 ) ! d, c% l! n8 E/ M( p
#define configMAX_PRIORITIES                                                ( ( unsigned portBASE_TYPE ) 10 ) 1 x: P  P4 f2 Z4 v# E4 Z; V
#define configMINIMAL_STACK_SIZE                                        ( ( unsigned short ) 60 ) 
  ]; u- q" Z0 c#define configTOTAL_HEAP_SIZE                                                ( ( size_t ) ( 3400 ) )                        /* 计算入Keil-ZI. */& {( C! A; g" y0 \" v- O/ |: s
#define configMAX_TASK_NAME_LEN                                                ( 16 )
: _* [- `+ A6 u" K* w#define configUSE_TRACE_FACILITY                                        1
" w+ f: r- ~# l* `7 v#define configUSE_16_BIT_TICKS                                                07 r5 x5 C8 @2 S) n( v6 H) e$ @" N
#define configIDLE_SHOULD_YIELD                                                1
# W8 Z6 n: p2 a! e1 e! x  j#define configUSE_MUTEXES                                       1; \+ |5 w0 K6 a9 m
#define configQUEUE_REGISTRY_SIZE                                        8
, [' d8 y8 D2 \5 L$ }# \#define configCHECK_FOR_STACK_OVERFLOW                                0. a1 T: _8 Q6 x. S* B; o
#define configUSE_RECURSIVE_MUTEXES                                        1
1 }- h' w8 f5 ^1 A& }( n2 ~9 c#define configUSE_MALLOC_FAILED_HOOK                                0
$ k2 U8 `- L! [" R9 E#define configUSE_APPLICATION_TASK_TAG                                0
+ G; ^8 N0 q7 n; g0 u#define configUSE_COUNTING_SEMAPHORES                                1
; S  v" i4 m2 F$ ?+ y8 K) V#define configGENERATE_RUN_TIME_STATS                                0
. Q( G" _; h4 }! v/* Co-routine definitions. */% Z3 x! z4 G3 x; j9 f+ ]# _
#define configUSE_CO_ROUTINES                                                 0' F; p+ G: B# a3 p
#define configMAX_CO_ROUTINE_PRIORITIES                         2
. Y! u* B' E" i: `- p5 H2 U" D# K/* Software timer definitions. */9 w+ s6 H" V! h# s
#define configUSE_TIMERS                                                        1( R$ R8 T( v* I9 u
#define configTIMER_TASK_PRIORITY                                        ( 2 )
, @- a. W$ S$ E: O* M5 l#define configTIMER_QUEUE_LENGTH                                        5; S0 p4 H. K: I2 k& P, b" c( U3 l
#define configTIMER_TASK_STACK_DEPTH                                ( 80 )
+ j, X& r7 V* F; Y5 E( h1 p$ \. c3 {$ B/* Set the following definitions to 1 to include the API function, or zero' V/ t, v) D2 a* A% J. t
to exclude the API function. */8 C' \* G0 v* a# q
#define INCLUDE_vTaskPrioritySet                                        1- X8 d# Z, u; n, p4 ?
#define INCLUDE_uxTaskPriorityGet                                        1
* b& [5 L6 o5 V6 p+ F#define INCLUDE_vTaskDelete                                                        1) O& H: i8 ^, U  L$ X
#define INCLUDE_vTaskCleanUpResources                                18 G/ \7 ~: G4 R9 i
#define INCLUDE_vTaskSuspend                                                1( x8 M7 l0 G7 b# ]# x: m  |
#define INCLUDE_vTaskDelayUntil                                                19 D: G* E9 C2 p* y% M
#define INCLUDE_vTaskDelay                                                        1
- \1 D% s+ Q. R4 @0 p# B. E
- ~3 W+ d/ ]* _. R, i8 C/* Normal assert() semantics without relying on the provision of an assert.h
; r8 K, A) r' s1 _$ s, cheader file. */9 U9 O: b0 i; 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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版