小白关于rt_thread_delay的问题

发表在 网络学习营2019-7-7 12:15 [复制链接] 3 472

1金钱
本人小白,最近工作上要用到跑rtt的stm32板,但我以前没有接触过单片机。对照教程试着移植之后跑了一下led灯,在用到rt_thread_delay 这个函数后发现没有延时效果(直接挂掉了??),现象是两个led点亮后一直常亮。跪求大神帮忙看下  以下main源码:
/ E9 f7 v( N7 y8 @  Z  `( `$ M# R- s- [- p- L* ^7 X  t/ g8 d9 g

) v/ e9 C+ ~$ }: O% Q+ c
0 u& L" }  `6 X6 d0 k  A% k2 W#include "board.h"1 u; ^+ [9 w0 k4 w' ~; E
#include "rtthread.h"+ K% {7 P  m" k$ Y3 h  L# |
: T, c( G7 o& P, Q5 R

7 b  D, a- T5 F! @2 j static struct  rt_thread  led1_thread;& U! g! r. t& ?1 C$ d. L

# l% f" j6 L  S& V# q0 r1 p

! u/ H  \3 i. \! b6 f' a% i ALIGN(RT_ALIGN_SIZE)4 H  c, a/ [+ U# s' q5 f7 n

  Z8 ~3 h1 w5 H. D

7 B4 d! V. C: }2 `8 D static  rt_uint8_t  rt_led1_thread_stack[1024];
2 o1 r& e2 n3 S7 p) O% y! v' J  g
* P/ P/ c+ T$ _* Z static void led1_thread_entry(void* parameter);0 G5 I4 Y/ Q- g- J

4 ^( [" T7 s2 r* q

8 }( S% c& V4 a; U4 n  d$ ?        0 U" d3 J! X9 P7 }% x( O7 J5 a
int main(void)
/ L% a& x' r, t# ], {{2 Y# d1 U' w* W% C  w
       
" ]9 J; [2 F( q7 K& i% Y6 o        rt_thread_init(&led1_thread,                            //线程控制块
3 g) Y* R) B# b6 [- @/ F                             "led1",                                         //线程名字
- A  j, m" v9 {! L                              led1_thread_entry,                     //线程入口函数
0 S5 ]7 ], S6 y( m7 }                              RT_NULL,                                   //线程入口函数参数+ r0 g$ t5 M9 ^" M( a' S3 u2 b
                              &rt_led1_thread_stack[0],         //线程栈起始地址$ {- J" a8 m* k' q! V
                              sizeof(rt_led1_thread_stack),     //线程栈的大小; {0 ?5 e5 e3 K+ z- }
                              0,                                               //线程的优先级
  Y" Y$ [" X- M# a                              20);                                            //线程时间片
$ w! K8 G5 H9 ?4 `                                                                 : F6 u& ?5 ^) u# Z/ H& W1 R
        rt_thread_startup(&led1_thread);                 //启动线程,开启调度% |; T7 }0 T( j) `* J
}
+ V/ |% n+ U6 ^1 \/ |; \6 Y) _$ x7 Q, s, I- _1 r0 I  N+ u9 ^7 b
& m& b' p! {- V5 `
. H# x$ |& C/ j6 E2 Q/ b% y
1 N% l- a, G7 j0 {
static void led1_thread_entry(void* parameter)
/ B$ O, D. E1 T* f1 D  Z5 I {
" ?; D  H2 L# ?  L5 b/ U( F                while(1)
, z3 v! z: T* i" p' d$ Z9 D4 l. b/ S                {   a* [9 b* C* s9 M7 M
                        GPIO_ResetBits(GPIOA, GPIO_Pin_8);    //led0 亮8 Z& c) d! `" {5 v, `  N- f
                        GPIO_ResetBits(GPIOD, GPIO_Pin_2);     //led1 亮. R0 Y7 R4 \/ k
       
2 N* E$ C# h6 D4 V) V                         rt_thread_delay(500);                            //延时500个tick# y& }  _; h8 X" E: D1 Q
  y# c+ d( K! i4 ]4 I' w8 c

+ w# {$ b' Q' \; D  @                         GPIO_SetBits(GPIOA, GPIO_Pin_8);        //led0 灭
, r, n2 v: f1 S# ~5 N5 d                        GPIO_SetBits(GPIOD, GPIO_Pin_2);        //led1 灭
! h" j, }) Z, E0 p( ]
. Q/ e. l  B5 n

7 f) `  a9 _0 P% q: ^% c/ ^                         rt_thread_delay(500);                           , {. E) x/ t0 _7 ~; b
                }, L# q! |; K* }) j% k
}
+ N7 ^1 _4 W6 l2 @- l9 D+ p8 ^7 E5 t8 y# I! o

; u6 R2 ?3 }7 u9 s2 N/ Q4 Q$ w

& M1 D/ Y! x9 j) m/ @! [" k! e4 q4 _! J; {# {) r) N
* V  r* k6 J8 H6 ]' s3 z0 f/ m% U

9 E# l% C/ K0 }9 G2 ^5 Y7 ?7 u) W3 A5 o6 N2 `  R

使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2019-7-7 16:22:38 | 显示全部楼层
哪个 BSP,什么板子?7 ?/ L( F6 U$ r' i4 q3 r3 u; m
! ]* ^4 I6 a3 q
直接挂掉了?
是什么现象,日志什么样?0 l4 T/ H; m8 @( N/ H
使用道具 举报 回复
发表于 2019-7-7 18:53:41 | 显示全部楼层
MurphyZhao 发表于 2019-7-7 16:22
. A$ g2 k/ q; A# Z哪个 BSP,什么板子?8 W4 d# f9 f" K

) p/ u& Z2 z% m7 }/ X. P 是什么现象,日志什么样?

; u0 V4 |: v0 m" ^1 V- q+ a你好,问题已经解决了。按照教程我加载了nano版本的,板子是正点的f103rc,操作教程用的野火的。这个工程在搭好后运行的时候我发现报如下故障“..\OBJ\LED.axf: Error: L6200E: Symbol SysTick_Handler multiply defined (by board.o and stm32f10x_it.o).”, 百度一下发现有网友也存在相同的问题,他们的解决方式是把重复定义的一个屏蔽掉,我当时不理解就直接把board.c中的void SysTick_Handler(void)给屏蔽掉,后来才明白应该屏蔽文件stm32f10x_it.c中的这个函数。闹笑话了,因为我没有这方面的基础。不过还是谢谢你过问了
使用道具 举报 回复
发表于 2019-7-8 09:24:31 | 显示全部楼层
qiudashan 发表于 2019-7-7 18:53
: F; O+ f; Y& z1 b1 ~  g你好,问题已经解决了。按照教程我加载了nano版本的,板子是正点的f103rc,操作教程用的野火的。这个工程 ...
. \  S: ^: c* i! u$ ^; \4 k
- t2 h7 j6 ~( {; e
SysTick_Handler 是用于系统调度时钟的,需要使用 board.c 中 RT-Thread 定义的
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RT-Thread开发者社区 ( 沪ICP备13014002号-1

有害信息举报电话:021-31165890 手机:18930558079

© 2006-2019 上海睿赛德电子科技有限公司

Powered by RT-Thread

快速回复 返回顶部 返回列表