四轴飞行器DIY活动征集报名中イち╟,!更有现金奉送哦~→ 立即报名 ←
电子产品世界 ? 真钱扎金花app ? 高校专区 ? 坤创E-Geek/天科大新电社 ? 3队MSP-EXP430G2ET学习(三)

共1条 1/1 1 跳转至

3队MSP-EXP430G2ET学习(三)

菜鸟
2019-07-08 14:12:10    评分

真钱扎金花app www.hytyao.com                                                                          MSP-EXP430G2ETGPIO口的学习

一弍∏⒁,大致介绍一下GPIO口

    在写之前ぉ﹌,小编要先给大家道歉≮ろきレ,由于我个人的失误卐づЙ←ザ,在上一篇中有一处设置出现了错误レ╜Хㄝ,就是芯片选择的时候ьて█╘ョ,应该选择MSP430G2553,虽然2335也能用/⒉┊йタ,但是板子上带的还是2553н╃,所以对此我以深深的反省╧ゲそⅪ﹌,保证以后不再犯这种小错误〗◥〆ぼ。好了接下来大家跟我一起学习GPIO口吧ㄢ╣Ы—!

   1.什么是GPIO口Φ?

  GPIO口是指通用输入/输出接口(General Purpose Input/Outputギ,简称 GPIO)是单片机通过引脚来控制或者采集外部电路的接口┏⒈,是单片机最基础的功能之一ǚて█ゆ。

   2.IO口有什么用≦?

      1)可以独立编程的上拉/下拉电阻的引脚

      2)可以提供输入№р捌╮,输出与中断的任意组合

      3)所有的寻址指令可对端口寄存器进行读/写访问

  3. MSP-EXP430G2ETGPIO口的外设认识

     首先让大家先看看这个开发板上的IO口和部分介绍∵╠±㏄。

image.png

       MSP430的io口跟51,32单片机的设置有所不同ヶ名Ъ, MSP430的io口是直接将8个io口直接分到一组ц⒅∧╯,分成了P1和P2ǐь女Ф,而它们的每一个位又给它划分为每一个io口アǖ,⊿项,然后通过十六进制来表示每一个io口れ▄╖,也就成了下图的样子「くガ,比如:P1.0的十六进制表示就成了0x01;P1.7的十六进制表示就成了0x80.

1562553838221615.png

   4.GPIO口中的寄存器介绍

       在上一篇中也提到了⊥,开发板上用到的三个重要的寄存器ハΦ↘丅,接下来给大家详细介绍一下吧└╤≦名‰..!

       1)方向寄存器:表达式为PxDIRく┰╋¤。每一个IO口都可以被单独配置成输入或者输出状态″﹤や┟↗,而方向寄存器就是决定它是输入还是输出的カщ③休,其中方向寄存器0表示输入﹌Ν┲厘零,1表示输出㈥。怎么说呢⒗А,它就是相当于皇帝>㏑㏄亇,他想要有人进皇宫或者出皇宫ャゅЮ┚,就指着谁进皇宫③┐,让谁出皇宫ヌ,谁就被提名了┪,然后那个被提名的就准备东西Π。比如:要用P1口输入┩é丄ろ,那就直接设置P1DIR=0x00⒍;要用P1.0输出の,那么可以设置为P1DIR=0x01;要是P1.0和P1.7同时输出的话か┿⒅Ψ,那就成了P1DIR=0x81;还有一种方法就是用头文件已有的宏定义如下图ロ,那么P1DIR=0x01就可以写成了P1DIR=BIT0;那么P1DIR=0x81也就可以直接写成P1DIR=BIT0+BIT7;

    1562556259618292.png

       2)输出寄存器:表达式为PxOUTめ○。方向寄存器选择输出状态后┓К╁ゼや,输出寄存器就开始对端口进行赋值了ど¤╜。其实它就相当于方向寄存器的禁卫军〡万,皇帝说让那个位置的人逐出皇宫┏せ→┵,禁卫军才出动㈡├项ブ,然后找到那个人④Γ〓,给他打个标签℡╈К。

          比如:要将P1.0设置成高电平日,那就可以直接写为P1OUT=0x01;或者写成P1OUT=BIT0.

       3)输入寄存器:表达式为PxINЛ。当引脚作为输入状态时℅㈠,引脚上的电平就会被缓存到输入寄存器中╠㏑⑶ベ。读取PxIN的值就可以得知当前引脚的状态了适Ρ⑸ˉ。输入寄存器这点很麻烦¥Τ∷ぐ↓,它还涉及到了原理图中引脚的初始状态┓∨ぃ,就比如说最常见的输入的引脚——按键×ヅ╛;如果按键它没有被外部电路赋值的时候它是什么电平Ш?经过我多方查找资料零▼氺ǔ,有人说是高电平╂к∟дⅡ,也有人说是低电平╙,但是实际上按键处于一种叫浮动的状态———也就是有可能是高电平,,也有可能是低电平曱がダに夊。这种状态是我们最不想看到的状态£,因为它很有可能影响到程序的逻辑█ぃ丩,也会出现各种bug⒈劳ㄞ,还会在电平装换时消耗不必要的能量╠θ。因此一般我们在引脚作为输入时通过一个电阻将该引脚接电源或者接地适ぬ,就形成了弱上拉或者下拉的状态亇ボ伍ゾ,而此时的电阻就成了上拉电阻或者下拉电阻へ∽㈠ザア,接了上/下拉电阻以后Ο♂,引脚的电平就不会乱跑了хЬ┼,而当外部电路的高/低电平接到引脚上时⑹“Ⅱ╟,该引脚又可以根据外部电平改变状态〉┩ォ┵。为了使用方便ㄈ〧ū┟ㄠ,MSP430单片机内部的上/下拉电阻Т水┎有。通过配置PxREN寄存器可以使能上拉/下拉电阻ア卍Ч,然后配置PxOUT寄存器就可以选择上拉还是下拉ォほ。那么MSP430上的按键就可以这样设置(⑸,让P1.3输入|ぞ,同时使能内部上拉电阻Χㄚ┱。

  P1DIR &=~BIT3; 

  P1OUT |=BIT3; 

   P1REN |=BIT3;

      4)中断标志寄存器:表达式为PxIFG┉и。0表示没有中断请求↖⒖κ,1表示有中断请求⑶╞Ⅸ。该寄存器有8个标示位⒁ま,对应相应的引脚是否有待处理的中断请求┿,这8个中断标志共有一个中断向量㎏ν,中断标志不会自动复位ラ,必须软件复位⒉㈦й⒔è。

      5)中断触发沿选择寄存器:表达式为PxIES♀。0上升沿中断щㄖ“▽ㄊ,1下降沿中断╢う。

      6)功能选择寄存器:表达式PxSEL▌Ⅺ。0表示选择引脚为io口端╯,1表示为选择引脚为外围抹j;㎜〈ポ?楣δ堠?『?ㄌ。

      7)上拉/下拉电阻的使能寄存器:表达式PxREN拍ㄖボ㈨。0表示禁止《ラ,1表示使能ㄡⅤ╢。

  5.GPIO引脚的复用

     现在的单片机集成的功能越来越多项ばУ,例如串口ㄓ、定时器玖ㄎ、 ADC 等贰┄⑼[め,这些外设都需要引脚-Ъブぁ,但如果为每个外设都留下单独的引脚ピō№Щ,单片机的引脚数量将会巨大ъ,这既不经济也不实用ち┤ど。另外这些外设并一定会同时使用㈦╕ムˉф,因此单片机提供了引脚复用的功能ナ~,将 GPIO 和其他外设放在一个引脚上〓でこЭ【,使用的时候通过寄存器来选择用哪一个功能ǐ╳◣。复用的引脚可以通过 PxSEL 寄存器来选择功能〖。鉴于有些引脚的功能多于 2 个н, 1 位寄存器不够用⊕ひēこ∠,所以 MSP430G2553 PxSEL PxSEL2 两个功能选择寄存器┯す◣弎≡,它们两个再加上PxDIR 寄存器配合起来可以选择多个引脚功能 ハ┲おゾ<。每个 MSP430 单片机的引脚功能具体定义在芯片 datasheet 中ⅲゥ,查找“Port Schematics”部分可以看到每个引脚有什么功能⒒,以及如何配置寄存器来启用这些功能ο。
User’s Guide 中㈥に↑╟,也会介绍 PxSEL 寄存器Ζ♀║マⅣ,但不会具体介绍针对每个芯片的具体引脚定义朤ΦФ‖⊕。一般来说引脚复用功能可以分为 Primary function Secondary function↘,对照 datasheet User’s Guide 可以发现二者是可以对应的ㄌМち。 例如我们要将 P1.0 端口配置成 TA0.TACLK 功能(在这里先不关心这个功能具体有什么用)ゐた,查阅 datasheet 可以找到该功能对应的 3 个寄存器的值~/ぴμモ,因此将寄存器对应赋值即可启用这个功能〤`で。
             P1DIR &= ~BIT0;
             P1SEL |= BIT0;
             P1SEL2 &= ~BIT0;
二ō═ㄞ《ペ,用GPIO口进行试验⒋よ。

     下面是我写的一个实验Ⅰ§ヵ┲,实现内容是首先点亮绿色的LED弍,也就是输出状态е,然后就是用开发板上的按键输入来改变红色的LED亮灭Нㄤ⒔>。

   

#include "io430.h"

int main(void)
{
 WDTCTL = WDTPW + WDTHOLD; //停止看门狗定时器
//初始化设置
 P1DIR &= ~0X08;
 P1OUT |= 0x08; 
 P1REN |= 0x08; 

 P1DIR |= 0X41;

  while(1)
   {
    volatile unsigned  int i;
     P1OUT ^= 0X01;//点亮绿色的led
      if((P1IN&0X08)==0X00)
      {
        i=2000;
        while(i--);//消除抖动
        if((P1IN&0X08)==0X00)
         {
          P1OUT ^= 0X40;
          }
        while(!(P1IN&0X08));//检测按键是否松开
      }
  }
}

  实验很简单あ『?,但是它涵盖了输入输出设置》∑カ|,小编也是正处于学习MSP430,如果有那点写的不好┎ㄆ,还望大家能在下面回帖指出来╟,然后能一起学习∠,一起讨论◆オさ,希望这篇帖子能帮助到大家に!










共1条 1/1 1 跳转至

回复

匿名不能发帖⑴ㄙ!请先 [ 登陆 注册 ]