[资料分享] 使用C / C ++的MSP430的GPIO编程和示例代码

fish001   2019-1-10 08:45 楼主
在我们开始编程gpio之前,您需要对C / C ++中的二进制和十六进制系统以及按位运算有基本的了解,下面是两个可以参考的教程(或者如果您已经熟悉这些教程,可以跳过这些教程并继续):


●     嵌入式编程的十六进制和二进制数字系统基础知识


●     教程:嵌入式编程基础C - 位操作




msp430.h是所有MSP430器件的通用头文件。该头文件识别您的器件,并相应地包含器件具体的头文件。每个器件具体的头文件还包括从BIT0到BITF的位定义。其中BITn等于(1 << n),即第n个位的位置是1,其余位是0。




现在让我们看看我们如何给寄存器赋值。我们可以使用十六进制符号和十进制表示法来赋值。如果您的编译器支持其他符号,如二进制符号,也可以使用。比方说,我们要设置Port 1的PIN 6作为输出。它可以通过以下方式完成:


方式1. P1DIR =(1 << 6); //(二进制左移 - 直接赋值:其他引脚设置为0)
方式2. P1DIR | = 0x20; //或0x20; (十六进制 - 或分配:其他引脚不受影响)
方式3.P1DIR | =(1 << 6); //(二进制左移 - 或分配:其他引脚不受影响)
方式4. P1DIR | = BIT6; //同上,使用标准BIT定义
复制代码


●     在许多情况下,必须避免使用方式1,因为我们直接为寄存器赋值。因此,当我们将P1.6'1'设置为'1'时,其他的被强制分配一个'0',这个'0'可以通过或操作来避免,然后赋值。


●     如果需要批量更改某些位,则可以使用方式2


●     方式3和方式4可以在需要改变某些或者一个位时使用。




这里首先要注意的是,十六进制表示法中前面的零可以被忽略,因为它们没有任何意义,因为我们在这里使用了无符号值(仅为正值),它们被分配给寄存器。 例如。0x4和0x04表示的意思一样。


请注意,位7是最左边的MSB,位0是最右边的LSB,它代表Big Endian格式。 因此,位0是右边的第一位,位1是右边的第二位,依此类推。 BIT和PIN码是基于零的索引值。

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复