• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >嵌入式开发 > MSP430中C语言问题

MSP430中C语言问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了msp430 c语言,msp430单片机c语言,msp430 c语言教程,msp430单片机c程序,msp430汇编语言等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:MSP430中C语言问题
描述:

c语言指针

      时间总是过得那么快,转眼就从大一变到了大三,丢了两年的C语言,现在突然学起430来,发现好多东西都不会,亡羊补牢,未为晚矣!重现在开始,一天攻克一点难题,希望能用这个学期自学430,暑假能有个地方实习,在用GPIO控制LED的时候遇到这么一行代码:*LED_GPIO[i]->PxDIR |= LED_PORT[i];//设置各LED灯所在端口为输出方向 虽然有注释,但不是很能理解,希望有人能帮忙解答一下,谢谢!
完全代码如下:
/*
 * main.c
 */
#include <msp430.h>
#include <stdint.h>
typedef struct                   //以指针形式定义P8口的各个寄存器
{
  const volatile uint8_t* PxIN;     //定义一个不会被编译的无符号字符型变量
  volatile uint8_t* PxOUT;
  volatile uint8_t* PxDIR;
  volatile uint8_t* PxREN;
  volatile uint8_t* PxSEL;
} GPIO_TypeDef;
const GPIO_TypeDef GPIO4 =
{ &P4IN, &P4OUT, &P4DIR, &P4REN, &P4SEL};
const GPIO_TypeDef GPIO5 =
{&P5IN, &P5OUT, &P5DIR, &P5REN, &P5SEL};
const GPIO_TypeDef GPIO8 =
{&P8IN, &P8OUT, &P8DIR, &P8REN, &P8SEL};
const GPIO_TypeDef* LED_GPIO[5] = {&GPIO4, &GPIO4, &GPIO4, &GPIO5, &GPIO8};
const uint8_t LED_PORT[5] = {BIT5, BIT6, BIT7, BIT7, BIT0};
int main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  while(BAKCTL & LOCKIO) // Unlock XT1 pins for operation
    BAKCTL &= ~(LOCKIO);
  UCSCTL6 &= ~XT1OFF; //启动XT1
  while (UCSCTL7 & XT1LFOFFG) //等待XT1稳定
    UCSCTL7 &= ~(XT1LFOFFG);
  UCSCTL4 = SELA__XT1CLK + SELS__REFOCLK + SELM__REFOCLK; //时钟设为XT1,频率较低,方便软件延时
  int i;
  for(i=0;i<5;++i)
    *LED_GPIO[i]->PxDIR |= LED_PORT[i]; //设置各LED灯所在端口为输出方向
  P4REN |= 0x1F; //使能按键端口上的上下拉电阻
  P4OUT |= 0x1F; //上拉状态
  uint8_t last_btn = 0x1F, cur_btn, temp;
  while(1)
  {
    cur_btn = P4IN & 0x1F;
    temp = (cur_btn ^ last_btn) & last_btn; //找出刚向下跳变的按键
    last_btn = cur_btn;
    int i;
    for(i=0;i<5;++i)
      if(temp & (1 << i))
        *LED_GPIO[i]->PxOUT ^= LED_PORT[i]; //翻转对应的LED
    __delay_cycles(3276); //延时大约100ms
  }
}


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MSP430中C语言问题

相关文章

  • 2017-06-17ARM存储系统机制
  • 2017-06-05 需要一个verilog测量延时电路
  • 2017-06-05 CPUiowait与异步IO有关系吗?
  • 2017-06-05 CE60系统车载导航GPS端口被加密,通讯内容好像也加密了求破解
  • 2017-06-05 会议室用无线路由器覆盖,同时提供500个用户接入应该选择什么路由器呢
  • 2017-06-05 将2k下的虚网卡驱动移植到98下的问题!急!
  • 2017-06-05 推荐个xilinx开发板型号
  • 2017-06-05 VS2003可不可以写驱动程序?
  • 2017-06-05 8051控制數碼管問題
  • 2017-06-05 STM32硬件IIC使用问题

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • MSP430多路捕获问题……
    • 有哪位老大知道PowerPC和PC的数据格式的转换?
    • PCI设备热插拔问题汇总,欢迎指教,赠送技术资料
    • 那位大侠编过改变LCD亮度的驱动程序?
    • vs2005-Wince60-cortexA9的可行性?
    • php与lua的关联?nginx与lua的关联?
    • wince6如何实现只读不写flash。mini2440
    • 急求usb20frowin2003的驱动程序
    • 问问多Interface的USB驱动!
    • 怎么查DeviceIoControl的功能代码丫

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有