我是靠谱客的博主 妩媚饼干,最近开发中收集的这篇文章主要介绍MSP430f5529-GPIO简介,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

        理论上来说,在不进行端口功能复用的情况下,每一个端口都能用作普通GPIO口用。其中P1和P2端口可以用作外部中断端口。其余的端口作用可以参考开发板自带的端口功能图。

        这里介绍外部中断和普通作用GPIO口寄存器和配置。

        430f5529使用的是宏定义的引脚名称。

         这里用P1口做例子:

        1.P1IN 可以读取当前P1端口某引脚上的信号值,用于读取电平信号,比如检测按键输入,通过读取P1IN 的值判断按键是否按下,如果按下了检测到的都是低电平,返回的就是0,反之1。

        用法: if (P1IN & BIT0),此为读取P1.0引脚上电平信号

        2.P1OUT 可以决定引脚的输出,比如在点亮Led灯的时候就需要让输出高电平

        用法:P1OUT |= BIT0 ,此为P1.0输出高电平,可以驱动开发板上的LED等或者外加的发光二极管。

        3.P1DIR 决定某引脚的方向,比如在输出模式时,方向置1;输入模式,方向置0。注意,在做GPIO使用的时候,方向是一定要定义的。

        用法:P1DIR |= BIT0 ,输出模式; P1DIR &=~BIT0,输入模式。

        4.P1REN 用于设置引脚电阻,上拉电阻置一,下拉电阻置0。在用作输入的时候要设置上拉电阻,不然貌似会出一些问题。

        用法:P1REN |=BIT0,P1.0设置上拉电阻。

        5.P1DS 设置驱动力?没用过

        6.P1SEL 额外功能选择,开发板左半边的引脚一般都有特殊功能,要启用特殊功能,这个寄存器需要置一。写法和上面差不多,具体哪些引脚有功能参考自带的功能图。

        7.P1IES 选择外部中断触发的方向,置一为下降沿触发,置零为上升沿触发。

        8.P1IE 中断使能寄存器,置一为开启某引脚外部中断,默认为零,不开启。

        9.P1IFG 中断标志位寄存器,当中断被触发以后,会自动置一,可以通过读取对应引脚上的标志位确定是否触发了中断。这个寄存器在置一以后不会自动清零,需要手动清零,即软件写零。在置一的情况下即使触发了中断也进不去中断函数。

        例程1.点灯

#include <msp430.h>

void main(void){
    WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
    P1DIR |= BIT0;
    while(1){
        P1OUT ^= BIT0;
    }
    
}

        例程2.外部中断

#include<msp430.h>

int main(void)
{
    WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer

    P1DIR |= BIT0; //将LED1对应的IO口P1.0设置为输出
    P1OUT &= ~BIT0; //初始化该灯设置为灭

    P1DIR &=~BIT1 ; //将按键1对应的IO口P1.1设置为输入
    P1IFG = 0x00; //初始化清空中断标志位(清空所有位)
    P1IE |= BIT1; //P1.1中断使能
    P1IES |= BIT1; //下降沿产生中断
    P1IN |= BIT1; //输入拉高?加着也没啥问题
    P1REN |= BIT1;//上拉电阻
    P1OUT |= BIT1;//输出拉高

//    __enable_interrupt();//开启总中断,很重要!
    _EINT();    //开启总中断的简化写法

    while(1){
        
    }
}

#pragma vector = PORT1_VECTOR     //固定格式,声明中断向量地址,不能变
__interrupt void LED(void) //函数名,可以任意定义
{
    switch(__even_in_range(P1IV,18))
    {
      case  0: break;       /* No Interrupt pending */
      case  2: break;       /* P1IV P1IFG.0 */
      case  4:              /* P1IV P1IFG.1 */
        P1OUT ^= BIT0;
        P1IFG &=~BIT1;//手动清空标志位
        break;       
      case  6: break;       /* P1IV P1IFG.2 */
      case  8: break;       /* P1IV P1IFG.3 */
      case 10: break;       /* P1IV P1IFG.4 */
      case 12: break;       /* P1IV P1IFG.5 */
      case 14: break;       /* P1IV P1IFG.6 */
      case 16: break;       /* P1IV P1IFG.7 */
      default: break;
    }

}

最后

以上就是妩媚饼干为你收集整理的MSP430f5529-GPIO简介的全部内容,希望文章能够帮你解决MSP430f5529-GPIO简介所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(74)

评论列表共有 0 条评论

立即
投稿
返回
顶部