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

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

[复制链接]
一花一世界003 发布时间:2015-1-25 22:00
列程序出来
) m; P9 O- c' X6 ]1 m9 z+ R* q#include "mbed.h" 7 W8 S6 Y) |- X! g" h1 u0 ~% A5 z& o
InterruptIn mybutton(USER_BUTTON);, V/ [% O5 F* I' z
DigitalOut myled(LED1);
' h5 C0 A( B0 ]# Y3 h0 O7 M7 ~. H! }' ]& q- P/ z4 \1 X
float delay = 1.0; // 1 sec
4 g' T+ G3 m) A5 Y& V- k) E6 W( m7 s0 ?
) E+ W  i; M3 W' k) F; [void pressed()
' F% x: _- s' ?+ f1 U) Q{
& t; p# ~" |# y! ^6 x& j. p    if (delay == 1.0). B9 e1 x& i) U  f
        delay = 0.2; // 200 ms
: v; l% E5 l! T. v    else
, p, n, J# ]9 K3 ~        delay = 1.0; // 1 sec8 I; q, ?& O$ v; U0 i% Y! i3 H
}
/ R6 i, ]2 ?, `8 Z. M; M+ K, U" `& ?
int main()
% o7 O* u3 j6 i8 ]{
+ e" B( Y* N- T; N9 I4 h    mybutton.fall(&pressed);6 a9 q: t7 }4 f$ I4 e1 I- h! ~
    while (1) {( T: g$ _4 C0 b5 @, H: b3 q
        myled = !myled;
( |# U! K. l) w4 ~4 n( r        wait(delay);3 g! f' |6 B) N) \# b9 x5 J& L
    }8 @% f# j: A0 m5 T4 G
}
7 l# l' z) v; Z. S  o+ Q" u$ F) Z  qInterruptIn 这个类的构造函数看不了。
6 t* j, g! |1 _6 v" V; _2 F QQ截图20150125215210.png " p* T! w3 X: l7 O, r& o9 u
但是,还是下载不进板子之中!
, Z6 b$ _3 t( F  q4 {# n: W还有2个非常有意思的库,TICKER,TIMEOUT
- K8 ]: `4 c3 K0 ~6 L9 }接着,我看这些IAR的教程不是非常多,所以,我会开一些例程,看看IAR怎么样处理# S1 n. a3 R' V
7 A$ k9 ^3 S) R4 ]
收藏 评论17 发布时间:2015-1-25 22:00

举报

17个回答
晓枫VS枯叶 回答时间:2015-1-26 10:30:24
这是中断的构造函数
7 ]5 C$ n  Z: F  e- l
  1. namespace mbed {
    7 Q/ |0 X6 L1 r- G7 d
  2. % H2 V! P+ k/ g$ C; z' l" j
  3. InterruptIn::InterruptIn(PinName pin) : gpio(),
    ! Z0 A0 a8 |3 w: p, e" G, x
  4.                                         gpio_irq(),, F* [7 e# b! e( C) [
  5.                                         _rise(),
    % b5 G6 F- N; f  O; H
  6.                                         _fall() {
    2 i; U: X& G. _! i9 V- ^2 v
  7.     gpio_irq_init(&gpio_irq, pin, (&InterruptIn::_irq_handler), (uint32_t)this);9 J! q! M3 e9 [( b( {+ c8 D) m
  8.     gpio_init_in(&gpio, pin);
    ) H1 _2 D) h% o2 ~6 J* z/ q( }$ k
  9. }
    9 j' z6 \$ t5 B7 |8 R

  10. & M( t, |) `, d5 a* S
  11. InterruptIn::~InterruptIn() {+ Q) s6 {4 A5 U4 K
  12.     gpio_irq_free(&gpio_irq);8 ?4 M- u! x! F: j
  13. }
    2 h0 c, U$ P7 ]  b
  14. * ?4 g9 f, G8 V9 F
  15. int InterruptIn::read() {
    ' j& \3 S% i1 ?7 J2 h
  16.     return gpio_read(&gpio);0 }8 t" m0 w6 S( v  W  m+ q2 T: w# L
  17. }3 Y( h- ~% }  v# V; @

  18. , g$ C0 b+ Y. C1 Y
  19. void InterruptIn::mode(PinMode pull) {
    9 g+ i1 K! y$ X0 ]
  20.     gpio_mode(&gpio, pull);6 K% e- i$ o; x3 E4 b/ g$ ]
  21. }! b" b; g" P; a& C: Z4 D5 X3 W! x% O
  22. 6 i: L/ t! n, E/ q5 ]8 \1 G: C, e
  23. void InterruptIn::rise(void (*fptr)(void)) {. n& X& w% V" K* U3 R$ V
  24.     if (fptr) {
    - y* f( q& l9 D# U$ z
  25.         _rise.attach(fptr);3 t. U5 D  _8 r$ \# U6 s, ~
  26.         gpio_irq_set(&gpio_irq, IRQ_RISE, 1);# }0 Q1 j1 I6 q
  27.     } else {
    + O$ X% X- j9 O) J
  28.         gpio_irq_set(&gpio_irq, IRQ_RISE, 0);
    % L% u; H) x7 [; o1 h7 k
  29.     }
    * D% Q5 N6 ?9 x7 `4 q3 v1 }
  30. }
    ' X7 {: c1 x! j, D; U& I
  31. 6 A8 J) U- Q2 P" N2 D. R5 i, G  P  q
  32. void InterruptIn::fall(void (*fptr)(void)) {' d) V& r; m- u  ^8 k+ ?
  33.     if (fptr) {0 A, B9 h" `/ r( j
  34.         _fall.attach(fptr);
    6 u, y- k$ P+ m2 p  w' ~7 M
  35.         gpio_irq_set(&gpio_irq, IRQ_FALL, 1);9 I& K7 b4 U9 D/ Q9 D0 j
  36.     } else {
    , E- {( {+ `/ Z5 _
  37.         gpio_irq_set(&gpio_irq, IRQ_FALL, 0);+ l5 Z% Z+ \8 a& z
  38.     }
    5 n# h) b) X& K! i
  39. }" s0 j% [1 E' Y& Z
  40. 4 j7 Z7 o$ x" u
  41. void InterruptIn::_irq_handler(uint32_t id, gpio_irq_event event) {. ]* V& j" @' B! g0 I9 y$ A
  42.     InterruptIn *handler = (InterruptIn*)id;
    . \. q# H2 o; u$ d
  43.     switch (event) {: i8 O  F$ G9 H
  44.         case IRQ_RISE: handler->_rise.call(); break;
    7 {* y2 @# h' ?1 b5 [1 ?
  45.         case IRQ_FALL: handler->_fall.call(); break;
    - ~7 g% A9 K( S. ^
  46.         case IRQ_NONE: break;% `. h" o. s8 C. O0 ?
  47.     }
    ; m  P' k/ \+ {
  48. }: f" V9 k$ }6 ~# y5 [' c, ?" G, G
  49. ) H; p$ p1 x1 I& `# O; N( d' l
  50. void InterruptIn::enable_irq() {
    ( R# t) q6 W! M( D% V
  51.     gpio_irq_enable(&gpio_irq);
    % |# z5 R$ L7 ]. ]; P7 h( A
  52. }
    1 k8 j3 V5 q7 k7 _

  53. ' x2 G) L4 A9 J6 F" _& y
  54. void InterruptIn::disable_irq() {+ S* e8 [) j  i: a' D; P
  55.     gpio_irq_disable(&gpio_irq);3 y" q( p1 I8 A/ R' w7 Z8 C  z
  56. }
    + F. M) d! q9 @3 l" g, P" p
  57. 0 t, C4 v7 f* |7 r8 B  F* P3 W
  58. #ifdef MBED_OPERATORS' ?5 d( Q& x, v6 H& a. t! [
  59. InterruptIn::operator int() {( D# J+ y- I' N
  60.     return read();( a3 {5 E% I. ?/ B) G' p
  61. }
    9 n, u) h& k3 r5 {- x
  62. #endif
    / _$ _( q" h/ \' }; I

  63. $ A1 Q/ n; f- ^! y0 z5 O+ `% o6 ~' k
  64. } // namespace mbed
    * c9 o' f8 v2 _
复制代码
一花一世界003 回答时间:2015-1-28 15:13:14
晓枫VS枯叶 发表于 2015-1-26 10:30
# ]7 n! G* P7 ^这是中断的构造函数
* d9 [0 T' T+ x& c* [$ k9 Y
感谢,请问你是怎么找到的???
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
, `% M' H! I% u2 X* v3 _' d; J& W
谢谢楼主分享
拼命三郎 回答时间: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:307 A! v/ q. z3 m% Z
这是中断的构造函数

7 s1 f( B" P" `- N4 X源码如何下载?
12下一页

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版