• MSP430学习笔记1---点亮第一个LED


    目录

    主程序

    第一句:DTCTL=WDTPW+WDTHOLD

    第二句:P1DIR  |= 0x01

    第三句:volatile unsigned int i

    第四句:P1OUT ^= 0x01; 

     

    主程序


    今天无意发现抽屉里有个MP430的板子,拿来研究一下。

    板子型号:MP430 Launch Pad

    主芯片:MSP430G2553

    Launch上网查了下,有开展的意思,Pad是板子的意思,和在一起就是初学者用的板子了,正好适合我这样的新手学习呢。嘎嘎。

    首先安装CSS5.3,网上找了破解文件,破解了。

    通过官网,建立了第一个程序,原程序找不到了,不过和下面的类似:

     1 #include  <msp430x14x.h>
     2 
     3 void main(void)
     4 {
     5   WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer 
     6   P1DIR |= 0x01;                            // Set P1.0 to output direction
     7 
     8   for (;;)
     9   {
    10     volatile unsigned int i;
    11 
    12     P1OUT ^= 0x01;                          // Toggle P1.0 using exclusive-OR
    13 
    14     i = 50000;                              // Delay
    15     do (i--);
    16     while (i != 0);
    17   }

    一句一句学习下:

    第1句:DTCTL=WDTPW+WDTHOLD


    后面解释是stop watchdog Timer(停止看门狗计时器),那WDTCTL的前三个字母WDT就是watchdog Timer(看门狗定时器的缩写了)。后面的字母啥意思,打开头文件msp430x14x.h看一下,搜索WDTCTL找到如下语句:

    SFR_16BIT(WDTCTL);                            /* Watchdog Timer Control */

    后面说的很明白,WDTCTL就是Watchdog Timer Control 的缩写。新的问题来了,SFR什么意思,百度说是Special Function Register(特殊功能寄存器的意思)。哦,那这句话就是定义了一个16bit的特殊功能寄存器。可以理解为从SFR这个大箱子里划出一小块(16BIT)给一个叫WDTCTL的人用。

    同样去头文件中找其他两个词语:找到的程序如下:

    #define WDTHOLD                (0x0080)
    
    #define WDTPW                  (0x5A00)

     百度找到句话: “这个指令设置密码(WDTPW)和停止位定时器(WDTHOLD),所有的WatchDog配置都需要在WDTPW的辅助下完成。”有了这句话就明白了剩下的了。

    WDTCTL的结构如下图所示:

     

    第2句:P1DIR  |= 0x01


    P1DIR字面的意思是P1 direction(也就是P1的方向,input/output?)

    |=是C语言中逻辑或的意思,表示有1变1。

    P1DIR  |= 0x01 这句话后面的解释是Set P1.0 to output direction 把P1.0口设为输出口。那很明显了, 1表示output(向外给),0表示input(向里要),这也很形象,有才能给么,哈哈。

    第三句:volatile unsigned int i;


    第一个单词不认识,直接百度是不稳定的意思,百科这么说:推荐一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。

    简单的理解,这个变量很重要,需要每次去看原版,不能看复印的,不然容易出错。

    unsigned int无符号的整数,不多说

    第四句:P1OUT ^= 0x01;                    


    后面的翻译Toggle P1.0 using exclusive-OR:用一个互斥或(也就是异或)来切换P1.0。

    至此,整个程序基本解释完毕了。

    把这个程序拷进板子中,红灯就闪啦,闪啦,闪啦~~

  • 相关阅读:
    IDEA插件备忘录
    SpringBoot2基础笔记
    EasyCode模板,配合通用mapper,dubbo项目使用
    七牛云存储
    Apache POI
    SSM项目中关于配置的一二三
    SSM整合笔记
    Spring5学习笔记
    ThinkPHP框架,按分类,计算商品价格区间,来完成价格搜索
    PHP常用符号和函数
  • 原文地址:https://www.cnblogs.com/Iknowyou/p/3463909.html
Copyright © 2020-2023  润新知