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

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

[复制链接]
Dylan疾风闪电 发布时间:2014-9-24 15:40
自己DIY了一块STM32F042C6的DemoBoard。
" A' D; b; G' e7 e8 u一天突发奇想,想要把FreeRTOS移植到板子上。
& u( |, @) H' [# Y0 ?头一次移植,苦恼于网上找不断Keil CM0 下移植的直接例程,程序调试也老是在xTaskCreate失败。
" _) x' M* p9 W; R, ^2 C. I- ] 
  N0 G8 f: i* q4 R2 G2 V% j今天程序终于调好了,能够开始跑FreeRTOS了。/ ^* s4 R) e  O
程序功能:
- k& [) I' F" \3 p1.LED指示灯
- d4 v1 s9 M; i3 }3 I2.USART1 & USART2  中断接收,轮询发送
3 q" L  o' v4 |/ B3.CAN 中断接收,轮询发送
+ p0 i( ]- U8 E( |+ }/ d 
6 e6 Y0 `7 }# n. \% t$ O/ k# M4.RTC
% e4 u" l! Z# q) y$ [ 8 S& D+ u: B  `
献上代码,请多指点。- G: ?! [( b2 c" S$ e
 
" _  x( O0 S3 V5 d' A2 ]) d代码未经整理,比较乱,请各位看官见谅。(该文件可直接导入eclipse C/C++工程,方便浏览。)3 ]8 g  ^7 F  }) w& _6 I
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配置到合适的参数。
% Z/ D- \& }/ \6 u* f, g6 x--------------------------------------5 N, `/ m' ^9 Q  |7 t: H; T* m
#define configUSE_PREEMPTION                                                15 B' Z; I- b8 `/ V; T
#define configUSE_IDLE_HOOK                                                        0 1 a* B. N7 ~! l1 k: a+ W6 z/ ~: D
#define configUSE_TICK_HOOK                                                        0 & T3 p. e6 X" l" I# u+ i
#define configCPU_CLOCK_HZ                                                        ( ( uint32_t ) 48000000 )3 v' H3 q2 n# G
#define configTICK_RATE_HZ                                                        ( ( TickType_t ) 1000 ) ' ^1 H, N, \+ f1 I5 g& d0 ~
#define configMAX_PRIORITIES                                                ( ( unsigned portBASE_TYPE ) 10 ) ( Z& |, f9 Z* s: m3 N( A
#define configMINIMAL_STACK_SIZE                                        ( ( unsigned short ) 60 ) 
. y/ |" e/ y: Y#define configTOTAL_HEAP_SIZE                                                ( ( size_t ) ( 3400 ) )                        /* 计算入Keil-ZI. */
- |) N6 d1 N/ ]" c9 t4 m1 x#define configMAX_TASK_NAME_LEN                                                ( 16 )* i3 S( F& k8 W4 N8 n! m
#define configUSE_TRACE_FACILITY                                        1
& g/ \( @! W. J' y  }#define configUSE_16_BIT_TICKS                                                05 g; W( |( g* v* }* J6 |
#define configIDLE_SHOULD_YIELD                                                1
' O! ]; Z8 R( p2 h; T#define configUSE_MUTEXES                                       1
; v/ l* i# Y6 t#define configQUEUE_REGISTRY_SIZE                                        8- ^4 Y9 f4 O, b* y3 \% R2 F
#define configCHECK_FOR_STACK_OVERFLOW                                0
" C2 X' |  j4 l" k- Z2 x4 {  T#define configUSE_RECURSIVE_MUTEXES                                        1
) z; ]: l: b% p#define configUSE_MALLOC_FAILED_HOOK                                0% X6 \1 A" p+ }
#define configUSE_APPLICATION_TASK_TAG                                0
- b9 G9 c6 O$ Y' I5 G+ U#define configUSE_COUNTING_SEMAPHORES                                1  x4 k; Z+ S1 g5 z/ S
#define configGENERATE_RUN_TIME_STATS                                0# s- ^. S* P2 C% c9 k
/* Co-routine definitions. */
$ l7 q% d7 W( O" I/ r3 z. `#define configUSE_CO_ROUTINES                                                 0+ }% i& i1 J6 H
#define configMAX_CO_ROUTINE_PRIORITIES                         2# X) j  Y0 b/ m6 @
/* Software timer definitions. */0 ?' d( _; q9 G" O4 X7 n
#define configUSE_TIMERS                                                        15 ^- S1 B5 y% [
#define configTIMER_TASK_PRIORITY                                        ( 2 )
4 e& P8 J$ y& E#define configTIMER_QUEUE_LENGTH                                        5, ^7 ]" h4 F2 Q! s3 U3 ^, M
#define configTIMER_TASK_STACK_DEPTH                                ( 80 )% {9 M9 e$ g  h
/* Set the following definitions to 1 to include the API function, or zero5 K' t* h9 q3 {
to exclude the API function. */$ z' ~! W' ?" x( _  h, r8 P
#define INCLUDE_vTaskPrioritySet                                        1
* P$ H$ m/ Q, l#define INCLUDE_uxTaskPriorityGet                                        1. B$ z4 X. e% ?. `  L  S) L! R: r
#define INCLUDE_vTaskDelete                                                        1% ^- Y3 }  g# N
#define INCLUDE_vTaskCleanUpResources                                1
& k" l8 r6 H8 M, [4 }#define INCLUDE_vTaskSuspend                                                1
( J( {8 G7 W% U1 _#define INCLUDE_vTaskDelayUntil                                                11 L+ ?6 f% e. S2 A& y
#define INCLUDE_vTaskDelay                                                        13 J- _& }- n1 H5 u

$ ^( M, W3 w, \  s$ G) \/* Normal assert() semantics without relying on the provision of an assert.h7 _( o7 u/ R) s& s; _. u
header file. */
  D9 E$ ?1 C* L6 r7 G7 t#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 手机版