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

ARM MBED----关于MBED的中断程序设计

[复制链接]
一花一世界003 发布时间:2015-1-25 22:00
列程序出来
% q( O6 t* J- n/ P4 S( j#include "mbed.h"
$ X0 p4 T) o; D/ O" MInterruptIn mybutton(USER_BUTTON);
, E8 T: R6 V. e5 d; V: Q" N7 IDigitalOut myled(LED1);
1 |" T9 A% M& J0 y8 x% W
" ~; @" X/ ~* k4 pfloat delay = 1.0; // 1 sec
1 e: k8 ]' Q% A4 Y& ?4 W  d
) x+ _+ V& Z# r8 d5 C3 U7 a6 K3 bvoid pressed()( L# |& C2 R% B0 o& u& J0 G& B
{
: y1 N7 w0 S& T: B+ w! O    if (delay == 1.0)
& |( j- l1 F( ^, S! s( Q7 E        delay = 0.2; // 200 ms
) \1 R1 c# A, t" h    else
9 a; |$ y* D! W1 m" K        delay = 1.0; // 1 sec
( g4 s6 r9 x, Y3 Z9 T}
1 n7 B( k* z& x6 R. A
; Z9 x9 N- V; s) J5 Tint main()' E! H  f2 I; F5 k2 f
{
+ L8 l4 \) F4 j8 u( E9 F4 U    mybutton.fall(&pressed);
$ g8 Y4 y# B& z5 [/ G    while (1) {' V; D2 C. j/ }2 W* i( @  P! G6 `+ g
        myled = !myled;
. ^# T  @5 b, N7 N        wait(delay);  `( v1 N1 s' d  ?$ z, S$ X; H
    }+ }0 \. }) ?/ o3 [5 O6 R# K+ S
}
2 A4 o( C3 L4 s8 c  aInterruptIn 这个类的构造函数看不了。* U  @" v. T& G
QQ截图20150125215210.png
' H& b2 x4 q* J! U但是,还是下载不进板子之中!6 h1 K- N3 d  E% g
还有2个非常有意思的库,TICKER,TIMEOUT
' W" S  E2 {# j接着,我看这些IAR的教程不是非常多,所以,我会开一些例程,看看IAR怎么样处理: |7 w4 G0 f8 s1 {

3 R: p( n" k) R: d& H
赞 收藏 评论17 发布时间:2015-1-25 22:00

举报

17个回答
晓枫VS枯叶 回答时间:2015-1-26 10:30:24
这是中断的构造函数3 N9 _1 j7 {! ~+ a6 e( B5 _* h- {0 P
  1. namespace mbed {
    ( ^8 Q+ A, t: F' B6 m) [7 p& W

  2. , d: r# T' R# h
  3. InterruptIn::InterruptIn(PinName pin) : gpio(),) d: \8 X; a& X
  4.                                         gpio_irq(),
      A! o" ?4 `$ h. V, Z. |: U3 @9 K
  5.                                         _rise(),: X) I9 x0 z2 o5 A
  6.                                         _fall() {7 _' E% a4 V+ W( K& j: K1 u# e9 Y
  7.     gpio_irq_init(&gpio_irq, pin, (&InterruptIn::_irq_handler), (uint32_t)this);' K* D# m' j' N' `3 J
  8.     gpio_init_in(&gpio, pin);
    * q/ }$ b, Z* X
  9. }/ c6 B7 I/ L" d$ ?
  10. 9 s3 r; i1 ~6 {1 Z
  11. InterruptIn::~InterruptIn() {
    - e# @! l  }! B( @+ k
  12.     gpio_irq_free(&gpio_irq);, F4 q  Y. G0 z) V
  13. }  v3 z7 V- a5 i8 L
  14. 3 `" @0 z7 J! s* C0 |6 r! L
  15. int InterruptIn::read() {: f2 U, d4 L# o0 E; q( f. `
  16.     return gpio_read(&gpio);
    4 \  ~  |+ ~3 V: `: b
  17. }
    % c7 b8 G0 g* J
  18. % p& z# w; e) f/ E' V* H. l
  19. void InterruptIn::mode(PinMode pull) {
    8 j* b* ^% K+ z, T# k& F
  20.     gpio_mode(&gpio, pull);
    # A, `' l& k  _! E8 o
  21. }
    " n5 P* B" H: O5 g# k# ]
  22. 1 i% X+ ?8 g+ U3 l5 i# J
  23. void InterruptIn::rise(void (*fptr)(void)) {0 F4 `" q2 N" g3 b- j; e
  24.     if (fptr) {$ d8 j; P0 l% f5 W! \
  25.         _rise.attach(fptr);
    / v7 G- f; B4 \- M5 s
  26.         gpio_irq_set(&gpio_irq, IRQ_RISE, 1);
    , i3 B  t% j8 U( |  s* v: L" C) X
  27.     } else {
    1 V# @0 K* X) a. f3 T! q8 Y; T
  28.         gpio_irq_set(&gpio_irq, IRQ_RISE, 0);0 V* y" X+ ~& E+ U9 U+ J
  29.     }; c+ [( \+ Q$ k5 E8 y" T
  30. }' `/ [5 L  K9 j$ ]6 L! N" B

  31. / o6 w6 O+ Q1 ^/ w
  32. void InterruptIn::fall(void (*fptr)(void)) {$ a  }- y7 q( |, @1 l
  33.     if (fptr) {2 ]7 \' D; E, i) Q% J
  34.         _fall.attach(fptr);7 u) v1 x8 l' U+ [5 ~8 u; S
  35.         gpio_irq_set(&gpio_irq, IRQ_FALL, 1);6 y9 ~* S' s- m, n$ K
  36.     } else {
    4 x8 t. {7 G. v0 b* `* y
  37.         gpio_irq_set(&gpio_irq, IRQ_FALL, 0);2 d  q' j0 O( m
  38.     }$ H" f# c8 M. P3 P8 X
  39. }
    ! ?' Y. ?9 b+ c8 m' y! y

  40. * i: B4 L9 l$ T4 G1 c7 t) f
  41. void InterruptIn::_irq_handler(uint32_t id, gpio_irq_event event) {5 K7 C9 {  m' U1 r( [$ W  w
  42.     InterruptIn *handler = (InterruptIn*)id;
    " X/ P3 j8 L& W$ @# o0 o
  43.     switch (event) {- k8 f; j% d6 Z, P: ^6 G
  44.         case IRQ_RISE: handler->_rise.call(); break;( w5 \* V2 x- B6 }$ B, j
  45.         case IRQ_FALL: handler->_fall.call(); break;
    % z9 Q- |, i7 _8 C& z
  46.         case IRQ_NONE: break;0 t# y; i8 W* e6 W) j
  47.     }/ ?: s% s% g: o# W; O4 n0 X
  48. }$ ~& u$ z5 z/ a8 [1 E& I* t9 T

  49. $ Y+ t) v' j3 ?& ~7 d- n& D
  50. void InterruptIn::enable_irq() {, u3 a: |! F- ?
  51.     gpio_irq_enable(&gpio_irq);
    9 y6 r- E* V- d( N* z1 e% b% I) d
  52. }
    ( j. X# V; W" W! K1 q2 H5 H( t
  53. # `. t2 X' u- f3 w% u5 W
  54. void InterruptIn::disable_irq() {
    , ?  d7 D& z3 [1 g% A
  55.     gpio_irq_disable(&gpio_irq);, B( G, c) z! q
  56. }
    - t/ C& A; [2 J, B) X: R' f

  57. ( @2 _2 M1 O5 H6 n5 `
  58. #ifdef MBED_OPERATORS
    7 u- F  U# G- F# t9 B3 y7 y3 b( J2 N& k
  59. InterruptIn::operator int() {7 r" o  P# ?' _. z. B# }3 V, M
  60.     return read();
    ' H0 w4 H; A( e" M$ e
  61. }
    / d% Z/ q  P$ i. p. t7 j1 [
  62. #endif
      }# ]* a% I8 F* c3 i7 {2 S
  63. 8 o+ ?0 ^5 g% z: W& N
  64. } // namespace mbed
    7 u# C3 _  h8 p! c: u
复制代码
一花一世界003 回答时间:2015-1-28 15:13:14
晓枫VS枯叶 发表于 2015-1-26 10:308 P$ w4 A: m: L; w7 H
这是中断的构造函数
/ H; H0 }2 {' Q7 e! o
感谢,请问你是怎么找到的???
sacq12 回答时间:2015-1-29 10:35:57
楼主的程序可以成功编译,(在线mbed),产生bin文件,下载到NUCLEO板子不成问题。
shaoziyang 回答时间:2015-1-25 23:06:19
有源码,可以慢慢研究。
feel-376797 回答时间:2015-1-26 05:14:39
4 m! I! ^' D9 m" T% v& M" F2 v
谢谢楼主分享
拼命三郎 回答时间:2015-1-26 08:09:30
stm32.jpg
星辰一方 回答时间:2015-1-26 08:36:40
等待楼主IAR例程
一花一世界003 回答时间:2015-1-26 09:22:12
O(∩_∩)O好的
harvardx 回答时间:2015-1-26 10:16:03
ARM公司亲自搞的 东西 ,你居然iar 哈哈 . 还是MDK吧.
fjjjnk1234 回答时间:2015-1-26 11:47:38
感谢分享
wangweili1978 回答时间:2015-1-26 23:02:20
22.png
wyxy163@126.com 回答时间:2015-1-27 12:50:11
提示: 作者被禁止或删除 内容自动屏蔽
一花一世界003 回答时间:2015-1-28 14:20:36
O(∩_∩)O谢谢
stary666 回答时间:2015-1-28 14:29:33
moyanming2013 回答时间:2015-1-28 14:37:49
晓枫VS枯叶 发表于 2015-1-26 10:30+ d4 i  |" J  R5 a
这是中断的构造函数
; L7 t9 s  t9 o* P6 p- S) T
源码如何下载?
12下一页
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版