MSP430F5529 入门心得

2021年全国大学生电子设计竞赛因为疫情而推迟了,因为电赛里必有一道题目是要使用TI的处理器而之前用习惯了STM32系列处理器没有使用过TI的板子,就拿实验室现有的TI的板子MSP4305529LP学习,为推迟的电赛做准备。其实掌握了STM32,AT89C51等单片机,MSP430单片机也是非常好入手的。以下,将我在学习MSP430遇到的一些小问题,以及一些实用干货,代码的分析方法分享出来供大家参考!

一、环境搭建

1.软件下载

本人使用的IAR开发MSP430,当然大家使用CCS也可以。我将IAR软件的安装包分享到评论区的链接中,如有需要自取。

2.安装方法

大家参考这篇文章即可

IAR7.8 安装教程

教程大家就按照这个来,在破解时一定要选择MSP430以免破解失败。

3.烧录程序配置

我们在接触新的开发板时,第一个碰到的问题就是如何烧录程序,JLINK? USB?还是有专门的烧录器?
烧录时,我们只用将开发板上的USB端口与PC段相连,电脑中自动就会下载相应的驱动。但是你写好了代码直接点击IAR中的烧录按钮,发现会碰到许多莫名奇妙的问题,如下所示。之所以碰到这些问题其实是我们IAR软件中有些东西没有配置好。
在这里插入图片描述
解决方法

(1)右键 IAR左侧WorkSpace的工程文件 在这里插入图片描述
选择FET Debugger 系统默认的串口号可能并不是我们下载的串口号。

在这里插入图片描述

而真正的串口号去电脑的设备管理器查看(如下图)

在这里插入图片描述

我们看到会有两个串口号 一个是Debug另一个是UART 所以COM 5才是正确的,我们需要手动修改过来。

(2)选择Linker 勾选Debug information forC-SPY
在这里插入图片描述(3) iar->Tools->options->stack->去掉选项“stack pointer(s) not valid until program reaches”
在这里插入图片描述

就可以成功下载了!

但是我们在下载时遇到了一个头疼的问题烧录程序的同时竟然也进入了Debug模式。
在这里插入图片描述
那我们可以设置一个只进行下载的快捷键
在这里插入图片描述

Project-------Download active application
将其拖入工具栏中即可之后我们在下载是直接点击快捷按钮就行,更加的方便。

在这里插入图片描述
注意:在程序下载完成后,必须按下开发板的复位键,程序才可以运行。

二、点灯程序分析

拿到一个自己没使用过的开发板第一个程序就是点灯。就像其他语言编程中的 Hello world一样有着很特别意义

如果自己写的程序烧录进去LED亮了,那么就可以说明这块板子的硬件,包括电源、处理器、引脚等等是没有问题了,还说明软件的烧录,运行等都是正常的。

那么我们针对TI给的例程进行代码的分析,通过点灯的程序为大家抛砖引玉一下,学会这个板子大致的学习方法。
在这里插入图片描述

首先大家看到主函数的第一句就懵逼了,这tm都是啥啊。其实大家不用被表面所吓到。根据注释呢 我们这行程序的目的是关闭看门狗。那我们就需要去查用户手册,去查找控制看门狗对应的寄存器。

在这里插入图片描述
WDTCTL = WDTPW + WDTHOLD;

可见我们就是对看门狗定时器的控制寄存器(WDTCTL)的8-15位和第7位进行了操作,而其他都没有动也就是默认状态0。那为什么几个英文就直接对寄存器操作了呢?其实呢TI公司为了考虑程序的可读性,开发的速度等等,为大家提供了库。就是将对应寄存器的操作进行了宏定义。
我们可以在程序中点击WDTPW Go to definition 去库函数查看他所代表的意义。

在这里插入图片描述

我们看到这一串字母代表的其实就是0x5A,就像手册中所说当我们进行写操作时就必须对他的高八位赋值0x5A.又因为一般来说这个寄存器的初始值为0x00;所以我们就可以直接**+WDTPW** 进行操作

当我们写进了0x5A就代表我们可以对寄存器的其他位进行操作了,我们的目的是要关闭看门狗。所以我们去手册查询是寄存器的哪一位控制着看门狗的开关。手册中指出Bit 7是控制开关的。那我们就要将第七位赋值为1才可以关闭。
在这里插入图片描述

我们可以在程序中点击WDTHOLD Go to definition 去库函数查看他所代表的意义。
在这里插入图片描述
我们看到他的宏定义代表的是0x0080 其实也就是0000 0000 1000 0000的二进制数据。也就是第七位为1
我们将两个数值相加。其实总的就是赋值给这个寄存器0x5A80。当然我们也可以直接在程序中写0x5A80,但是在别人看代码时或者之后你自己在看代码时还要费劲的去查手册。很是麻烦所以我们尽量使用宏定义。

在你没有使用到看门狗时,关闭看门狗通常是我们写程序初始化的第一步。初始化过后,我们就要将LED所对应的IO进行初始化。去设置他是输出还是输入。高电平还是低电平。
在这里插入图片描述

我们要去查用户手册有关I/O的寄存器
在这里插入图片描述
我们可以发现这个DIR其实是I/O的方向寄存器设置为0为输入(默认),设置为1为输出。

我们要点灯,所以我们要将对应的寄存器置为1 输出状态。我们应该怎样操作呢?

我们可以在程序中点击 BIT7 Go to definition 去库函数查看他所代表的意义。

BIT7 其实就是将DIR寄存器的第七位设置为1.那么我们就成功将P4.7设置为输出模式。P1.0同理。
因为我们的MSP430F5529板载的两个LED对应的管脚就是P4.7和P1.0。所以我们要对其进行操作。

重要 ‼‼

那么我们为什么要 P4DIR |= BIT7 这么写呢?本身的意思是 P4DIR= P4DIR | BIT7

通过一个或操作我们可以避免对其他的管脚造成干扰。比如0x80 我们进行或运算因为0|0=0
1|0=1的所以他只对第七位有作用。如果我们直接给他赋值0x80 那么我们其他管脚本身为1的就会被清零。这是我们进行或的目的。

同样我们如果要对某一位置0;P6OUT&=~BIT3我们通过取反再去按位与,达到置0的效果并且不干扰其他的端口。

不明白的同学可以去纸上展开成二进制画一画,大家自然就会明白。

**方向设置好了 我们只用将其输出改变即可实现LED的亮灭。**所以while(1)中我们只用改变管脚的输出即可。

在这里插入图片描述
这是输出寄存器的手册说明
在这里插入图片描述
当我们对某一位设置成输出模式那我们将其输出寄存器的值置1,就可以输出高电平,即可以点亮LED。输出低电平就熄灭LED。非常的简单。

我们在程序中进行了异或的操作
P1OUT ^= BIT0;
其效果就是电平的反转 比如我们 P1OUT 为0那么与1异或 就为1。那么这时P1OUT就为1我们继续与1异或,输出就为0从而达到一个翻转的效果。

最终我们进行一个延时操作。就可以看到开发板上的两个板载LED灯闪烁的现象,我们的效果就达到了。
在这里插入图片描述
通过对点灯程序的分析,目的是为了抛砖引玉,举一反三。我们之后调模块就是看他的寄存器是怎么赋值的。其实MSP430相比于stm32就是对寄存器的直接操作比较多而已,道理是一样的。相信大家一定会快速上手的!

一定要多看手册!!!
一定要多看手册!!!
一定要多看手册!!!

重要的事说三遍

💛💛💛.

本次的分享就到这里啦,如果觉得对你有用的话,就请点赞关注哦!如果有其他的问题,可以在评论区讨论!我将相关的资料全部放在评论区的链接里。如有需要自取!

在这里插入图片描述

  • 31
    点赞
  • 160
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值