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

[复制链接]
1582|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);
原野之狼 发表于 2014-7-15 12:35 | 显示全部楼层
Frank2013 发表于 2014-7-15 11:00
void (*)()声明的是一个指向函数类型的指针
((void (*)())加了一个括号是强制类型转换
((void (*)())0x170) ...

嗯  基础不错~
 楼主| 51DPJLT 发表于 2014-7-16 15:35 | 显示全部楼层
Frank2013 发表于 2014-7-15 11:00
void (*)()声明的是一个指向函数类型的指针
((void (*)())加了一个括号是强制类型转换
((void (*)())0x170) ...

很详细 谢谢 懂了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

15

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部