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

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

[复制链接]
一花一世界003 发布时间:2015-1-25 22:00
列程序出来" v, U( I- j: c. M* }9 Z( }
#include "mbed.h"
/ \- G. ~+ q' uInterruptIn mybutton(USER_BUTTON);& V! L$ ]/ F; V, A
DigitalOut myled(LED1);! G6 o8 a) ^" L2 H) L

2 S/ G/ A+ Z  nfloat delay = 1.0; // 1 sec
8 y; ~9 f/ M6 m* d/ i9 e9 f5 A* L" ?' }/ V0 w. Q
void pressed()! ~! u2 D1 u: F$ a/ i' R! H9 w. E
{
7 ~5 O) n8 @* L5 _2 r3 `    if (delay == 1.0)
& i, O' g* t$ A        delay = 0.2; // 200 ms0 C$ P8 H6 n, D& V8 a+ q& u5 O
    else! W- z* e  Y2 s0 T  f: r8 G
        delay = 1.0; // 1 sec0 N$ K6 T( S( H5 R& `' L/ p- n
}
. B! z4 {& [4 t. p" I) k1 T. G  |7 v; |' z
int main()0 \; |+ Z3 I7 }% Z4 {6 [0 X
{
# ^  |( N4 S; k. W; |- K* Z    mybutton.fall(&pressed);. o( c2 O0 K" k+ X
    while (1) {- O! H5 E5 U) ^7 a; Q, R8 Y
        myled = !myled;% ]$ i1 }6 A) l0 R- x
        wait(delay);" {( N, X- I- E2 B7 m
    }3 E9 g! |" r  V3 W
}
4 L3 H- g' {% E* h* o: X$ C" IInterruptIn 这个类的构造函数看不了。
; A- A2 [1 D) ?* a QQ截图20150125215210.png
! i3 O1 z7 u9 w) U$ ]+ x但是,还是下载不进板子之中!
# {4 P$ X+ G) F# x0 E7 V" e+ Z  b还有2个非常有意思的库,TICKER,TIMEOUT0 E0 x  }5 y5 T( e) E* x
接着,我看这些IAR的教程不是非常多,所以,我会开一些例程,看看IAR怎么样处理% N( g0 R! b3 v1 x' r# p

' W7 B( u9 W- G, m
赞 收藏 评论17 发布时间:2015-1-25 22:00

举报

17个回答
晓枫VS枯叶 回答时间:2015-1-26 10:30:24
这是中断的构造函数* N/ W- g( O; o  h' v; w4 r
  1. namespace mbed {
    ) }7 P7 r$ Z: S3 ^8 e( Q3 i. P
  2. 9 m( t$ r& D. ~* `3 l
  3. InterruptIn::InterruptIn(PinName pin) : gpio(),: b2 [! A7 V2 ~0 D# q  c$ ?
  4.                                         gpio_irq(),
    % r. y: n/ t8 S9 Q9 X8 \" j1 i
  5.                                         _rise(),' U5 p: A/ V( P9 E  K8 C
  6.                                         _fall() {# g2 e( ^- J6 e0 F
  7.     gpio_irq_init(&gpio_irq, pin, (&InterruptIn::_irq_handler), (uint32_t)this);/ G& B+ J/ V% s
  8.     gpio_init_in(&gpio, pin);
    5 @- l$ U  o3 s+ W; i5 s8 Y8 j5 @
  9. }$ [$ W) e$ F- U# `2 c7 D" z3 ^
  10. 5 B3 y: H4 O. c" `, a7 T, c
  11. InterruptIn::~InterruptIn() {
    5 E% K) {6 z2 N$ B5 }( Z
  12.     gpio_irq_free(&gpio_irq);
    4 F. n/ W) X3 K$ N4 G3 T+ R
  13. }
    # r  ?8 u" p2 J4 G

  14. 9 Y4 [/ Y2 v- j4 \9 J+ A
  15. int InterruptIn::read() {
    5 V5 k# k2 L' ~7 X
  16.     return gpio_read(&gpio);
    + s+ J$ ]) J2 h7 y, {5 y8 ]
  17. }
    , w7 m' v; L! A  g/ a3 L7 e/ }) _. a
  18. 8 u( a4 Y1 c  o# E* v
  19. void InterruptIn::mode(PinMode pull) {% Y& z/ C1 A5 d. T5 D8 {
  20.     gpio_mode(&gpio, pull);  y" L( S' o" v3 ]6 e3 }. ]2 l6 N4 H
  21. }3 k: ?5 `0 q8 r, Z6 G; p2 {

  22. 1 V1 {: z, o% [8 g1 S
  23. void InterruptIn::rise(void (*fptr)(void)) {
    # c/ \3 h0 S) H5 c/ w8 d+ F
  24.     if (fptr) {" w% n+ g" i) [: c$ W& g
  25.         _rise.attach(fptr);* v* X+ T/ D  {5 i) }6 B* ^
  26.         gpio_irq_set(&gpio_irq, IRQ_RISE, 1);
    7 U0 t3 ~4 J( y
  27.     } else {
    : N( T9 g3 F) R$ A1 P; a6 \8 z" e( P
  28.         gpio_irq_set(&gpio_irq, IRQ_RISE, 0);
    . T( C" q' ?0 b) s0 y( w
  29.     }1 [& X7 K$ m% C
  30. }
    3 A' V( x& Z* b; O  X

  31. : k" `6 ~: |2 t( Q/ N
  32. void InterruptIn::fall(void (*fptr)(void)) {( x) U+ v- z2 @8 @8 S" K* k* X, i
  33.     if (fptr) {
    1 b6 o* H# e4 B' h( @
  34.         _fall.attach(fptr);
    4 H6 f( S' h& s2 |
  35.         gpio_irq_set(&gpio_irq, IRQ_FALL, 1);
    $ P7 G( s- d7 i* y* q
  36.     } else {
    * m  |0 ~$ X0 H1 b6 J
  37.         gpio_irq_set(&gpio_irq, IRQ_FALL, 0);
    2 W. Y7 P) B7 a
  38.     }6 p9 j) h5 P5 L
  39. }
    . ]$ |+ w* ]) o( P

  40. ; v( j$ F4 O: t! t( N- d
  41. void InterruptIn::_irq_handler(uint32_t id, gpio_irq_event event) {) s1 Q; F7 c) |/ g4 v& ]
  42.     InterruptIn *handler = (InterruptIn*)id;
    6 Y! H; v# o: I( {
  43.     switch (event) {
    ' y4 F9 p/ {" s/ m( B7 R
  44.         case IRQ_RISE: handler->_rise.call(); break;
    3 `- g0 [" P( e6 Z* Y) s
  45.         case IRQ_FALL: handler->_fall.call(); break;
    8 y" N# u. U5 `* j
  46.         case IRQ_NONE: break;
    * `/ ~% _  C' U7 x& ]2 j2 e) q1 \$ D
  47.     }
    : y* v1 }, W8 _  m
  48. }- \7 i- K0 X! a

  49. & H# w+ I  t0 K; m, M7 }
  50. void InterruptIn::enable_irq() {' k" @* F7 s$ h
  51.     gpio_irq_enable(&gpio_irq);
    . h& ]; X/ m. f  }$ v
  52. }
    5 w1 d2 {9 P# c
  53. " V9 r2 Q2 D) j$ P/ c. A+ N9 c
  54. void InterruptIn::disable_irq() {
    0 u5 y7 Y9 }: E9 s# [
  55.     gpio_irq_disable(&gpio_irq);
    ! Y( l- d2 q8 h9 l
  56. }
    5 i" a# Q. u5 n
  57. / Q4 L  O. v3 U. a  v6 b; T: i
  58. #ifdef MBED_OPERATORS* w. c: Y4 ]+ B9 V
  59. InterruptIn::operator int() {+ a  _# W- F7 R% v1 ^
  60.     return read();
    4 C# W: M* r% R( R/ x8 l5 Q4 m% V
  61. }( Z' G2 w: _+ n# H: b0 @
  62. #endif7 ], t& e7 i& `! E+ ~1 T

  63. 1 s. N& c- r% l# C5 U  o' ^' ]
  64. } // namespace mbed, y* `. ^! |- M+ f
复制代码
一花一世界003 回答时间:2015-1-28 15:13:14
晓枫VS枯叶 发表于 2015-1-26 10:30
4 B. A" q3 i# s这是中断的构造函数
3 Y- C/ z" E! l* h
感谢,请问你是怎么找到的???
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

# W, t7 @  }  }- q+ s% q2 O谢谢楼主分享
拼命三郎 回答时间: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: v# }/ o4 b8 b  @, y9 ^
这是中断的构造函数

" v# R+ i! y/ _6 v( Z2 b. g6 Q! ?源码如何下载?
12下一页
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版