打印
[MSP430]

这是TI给的例程,有点看不懂

[复制链接]
1071|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
51DPJLT|  楼主 | 2014-7-15 10:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <msp430.h>

int main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer
  P1DIR |= 0x01;                            // Set P1.0 to output direction
  TAR = 0x3FFF;                             // Opcode for "jmp $"

  for (;;)
  {
    volatile unsigned int i;

    P1OUT ^= 0x01;                          // Toggle P1.0 using exclusive-OR

    i = 50000;                              // Delay
    do (i--);
    while (i != 0);
    ((void (*)())0x170)();                  // Invalid fetch ("call #0170h")
  }
}
红色部分是什么意思
而且do while这样写对吗,我怎么觉得怪怪的,小弟新手勿喷

相关帖子

沙发
Frank2013| | 2014-7-15 11:00 | 只看该作者
void (*)()声明的是一个指向函数类型的指针
((void (*)())加了一个括号是强制类型转换
((void (*)())0x170)给这个函数指针赋值0x170
((void (*)())0x170)()就是调用该地址的函数了

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
51DPJLT + 1 很给力!
板凳
diweo| | 2014-7-15 11:53 | 只看该作者
先学习一下函数指针吧 。

使用特权

评论回复
地板
perry_peng| | 2014-7-15 12:10 | 只看该作者
do while类似while (--i);

使用特权

评论回复
5
原野之狼| | 2014-7-15 12:35 | 只看该作者
Frank2013 发表于 2014-7-15 11:00
void (*)()声明的是一个指向函数类型的指针
((void (*)())加了一个括号是强制类型转换
((void (*)())0x170) ...

嗯  基础不错~

使用特权

评论回复
6
51DPJLT|  楼主 | 2014-7-16 15:35 | 只看该作者
Frank2013 发表于 2014-7-15 11:00
void (*)()声明的是一个指向函数类型的指针
((void (*)())加了一个括号是强制类型转换
((void (*)())0x170) ...

很详细 谢谢 懂了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

15

帖子

0

粉丝