【MSP430趣谈】MSP430第五讲之库函数的使用

哈哈!经过前面的四讲,不知道大家有收获没有。至少感觉自己有点入门了吧。可能大家会说为什么要写这个,那么多的书籍,也有很多的教程。我的出发点是他们大部分的都是以工程师的身份了,或者说已经从事这一块行业比较长的时间了。可能在学习的时候,很多时候他们遇到的问题对于他们来说没什么,但是我们有时候完全搞不明白。但是我觉得我作为一名刚刚学430的大学生来说,可能写出来的更加贴切大家在实际学习。也希望说把每一个问题都可以说到,但是这很难,也希望大家能够指出来,来帮助完成这个教程咯。

(PS:不知道大家有没有遇到说跟着教程做,但是他是对的,自己也是一步一步来的,但是就是不对,完全不知所以然,有时候,真的给气死。)

好了,废话讲了一堆,进入我们今天的学习,我们这次学习的话就是来看看怎么运用官方的库。对于前面两三次的代码我们都是通过直接操作寄存器的方式,(就不解释寄存器了哈,这个概念还是蛮复杂的哈,自行百度)那么还有其他的方式,就是建立在库的层面,也就是我们看不到寄存器了,看到是每一个子函数的函数名了,也就是所谓的API(Application Programming Interface,应用程序编程接口)。可能说的有点抽象哈,我们看下具体长什么样哈。

文件在第一讲的文件当中哈,文件夹MSP-EXP430FR5969_Software_Examples_windows

打开我们看到,

在Readme中我们可以了解整个文件夹的结构和他们的内容。

(就不翻译了,不要嫌我懒,因为真的太多了)

这里我们利用的是上图红色方框中的库文件,打开后目录如下,

我们打开driverlib,里面有个文件夹MSP430FR5xx_6xx,好了,我们看到我们的库了。

好多好多好多。。。。。。。其实TI官方也挺懒的,有没有发现每个文件都只是以模块命名的,没有说使用与那些单片机,当以后大家下载TI其他芯片的库的时候发现他也是这样做的,哎。等等我们来改造一下好了。

我们开的这个文件夹430BOOST-SHARP96_GrlibExample_FR5969是一个TI官方的一个Demo

我们看下怎么导入这个工程哈。

打开ccs,点击files

单击Import

选择 Code Composer Studio下面的CCS Project

单击Browse,找到你的文件夹,记住是430BOOST-SHARP96_GrlibExample_FR5969,这个文件夹。单击Finish即可。但是这里我犯了一个错误,就是我把这个工程放在了中文路径下,如果大家要编译这个工程的话一定要放在英文路径下。大家就可以在工程的那个窗口中找到我们的工程,可以看看目录长什么样,这里我们就不讲了,我们看看怎么用这个库。

我们这里要运用外设库,我们右键复制上面的driverlib,然后右键我们新的工程名,选择粘贴即可。

接下来我们需要更改一下路径,把我们刚刚添加进来的文件的路径加进去。右键工程名选择properties。

单机黑色方框中的按钮,

选择workspace。

选择driverlib。单击ok即可。

接下来我们就可以进行程序编写了。但是有个问题就是我们该如何使用这个库呢?TI官方有个网站来说明这些库函数的具体使用方法,我再最后给出了该网站的HTML文件,方便大家使用。

还有一份PDF的说明文件,建议用这个吧。在附件中。路径如下。

(PS:上面的方法是不用msp430ware的方法,大家可以通过msp430ware的安装来完成一样的功能。430ware我不是很熟悉,这里就不介绍了,之后有机会我们在说说它的使用)

现在我们使用库文件来实现上次讲的按键中断点亮led的功能。

第一步同样还是需要关闭看门狗,我们建立工程的时候选择了带有main.c的工程,已经帮我们写好了main函数和关闭看门狗的语句,这里就不在写了。

第二步就是要关闭LPM5模式,我们看下怎么用库。

所先第一步要将我们所有的库文件包含进来,

#include “driverlib.h”

在PDF文件夹中,我们在PMM章节中找到关闭LPM5的方法。

只需这样写:PMM unlockLPM5();

(关于函数的具体内容我们直接点击PDF文件中蓝色的文字即可马上跳转过去,很方便。)

接下来我们需要配置引脚方向,跳转到GPIO章节。

这里列出了所有的函数列表,方便我们查找(对英文有一定挑战!!年轻人,这有什么,不就是英文嘛,打开有道词典,别怂!!)

GPIO_setAsOutputPin(GPIO_PORT_P1,GPIO_PIN0);//设置为LED端口为输出

GPIO_setOutputHighOnPin(GPIO_PORT_P1,GPIO_PIN0);//设置LED默认输出为点亮

GPIO_setAsInputPin(GPIO_PORT_P1,GPIO_PIN1);//设置为按键端口为输入

GPIO_setAsInputPinWithPullUpResistor(GPIO_PORT_P1,GPIO_PIN1);//配置按键上拉电阻

GPIO_selectInterruptEdge(GPIO_PORT_P1,GPIO_PIN1,GPIO_HIGH_TO_LOW_TRANSITION);

//设置按键输入下降沿触发

GPIO_enableInterrupt(GPIO_PORT_P1,GPIO_PIN1);//使能按键端口中断

上面我们就完成了端口的设置

#pragma vector = PORT1_VECTOR //该语句用来标识我们所列矢量的中断服务函数

如果这句不是很理解也没关系,暂且明白,就是要这么用。

下面就是我们的中断函数了。我们将上次的代码全部改成用库函数来编写。

__interrupt void PORT1_ISR(void)

{

unsigned int Key = 0;

Key = GPIO_getInputPinValue(GPIO_PORT_P1,GPIO_PIN1);

if(Key == 0)

{

__delay_cycles(50000);

if(Key == 0)

{

GPIO_toggleOutputOnPin(GPIO_PORT_P1,GPIO_PIN0);

}

}

GPIO_clearInterrupt(GPIO_PORT_P1,GPIO_PIN1);

}

这里再解释几个问题,关于__delay_cycles(10000)是调用了系统函数,但是函数的具体意思我也不是很明白,希望大家可以帮忙回答哈。

解释一下按键的延时,为什么要这样。因为按键是属于机械机构,具有不稳定性,需要进行一段时间才可以稳定,刚按下状态是不定,产生抖动。通过延时去除这种不稳定性。我们这里使用的是软件消抖,当然也通过硬件的方式,并联一个电容即可,但是这样就增加了硬件成本。

附件中给了另外一份库文件,如果大家没有下载之前的文档也没关系,使用方法也和上面类似的,就是把driverlib拷贝到你的工程目录下面然后右键工程选择Import下面的import,

选择File System然后找到工程目录下的driverlib就可以了。其他的和上面一样。

得到下面的工程目录。同样的在properties中配置路径。不再做一边了哈。

欢迎观看

【MSP430趣谈】MSP430第一讲

【MSP430趣谈】MSP430第二讲

【MSP430趣谈】MSP430第三讲

【MSP430趣谈】MSP430第四讲

(0)

相关推荐

  • 【新提醒】华大单片机(hc32l073pata)环境搭建及点灯源程序

    官网链接: http://www2.keil.com/mdk5    安装教程自己在网上可以找到    2)安装华大ide包     官网链接: www.hdsc.com.cn/Category82- ...

  • 手把手带你制作WIFI智能开关.走进物联网-ESP8266学习日记(三)

    手把手带你制作WIFI智能开关.走进物联网-ESP8266学习日记(三) 2020-05-11 19:43:10 16点赞 152收藏 12评论 上一次我们初步认识了SDK编程和透传,给模组更新FW. ...

  • GPIO 软件框架

    GPIO 八种工作模式详解 接着上一篇的讲,我们上一篇研究了 GPIO 的硬件结构,其来源于 STM32 官方手册,研究了 GPIO 的八种工作模式和推挽输出及开漏输出原理,接下来我们研究 GPIO ...

  • 深度:单片机到底是如何软硬件结合的

    我们通过IO和串口的软件开发,已经体验了嵌入式软件开发.不知道大家有没有疑惑,为什么软件能控制硬件?反正当年我学习51的时候,有这个疑惑.今天我们就暂停软件开发,分析单片机到底是如何软硬件结合的.并通 ...

  • 【MSP430趣谈】MSP430第十三讲之DMA的应用

    本系列教程应该来说也已经基本接近尾声了,还会有几讲的内容,最后如果可以的话还回附上一个具体的案例让我们来看下具体该如何应用430这款产品.也将更加深入的探讨他的低功耗特性. 今天我们还是继续讨论430 ...

  • 【MSP430趣谈】MSP430第十二讲之ADC(下)

    Ksps的意思是每秒转换次数为多少. 这里插播一个细节的东西,德州仪器(TI)的官网不管对于库函数还是寄存器都给出了示例代码,我们通过我们CCS环境下面的TI Resource Explorer下面查 ...

  • 【MSP430趣谈】MSP430第十二讲之ADC(上)

    首先我们需要明白一个问题是什么是ADC,中文翻译过来就是模数转换器,从他的英文名的话我们会更加好记,Analog-to-Digital Converter. 简而言之就是将模拟量转换为数字量.在我们的 ...

  • 【MSP430趣谈】MSP430第十讲之SPI总线驱动OLED

    上次我们说到了430的UART的使用方法,当我们一步一步开始探索的时候会发现它的实际应用是十分复杂的,但是经过我们的慢慢的看下来,我们看到TI给了很多官方的参数供给我们进行选择,所以这里给我们带来了很 ...

  • 【MSP430趣谈】MSP430第九讲之串口使用

    上次一讲中我们说到了定时器的两种写法,一种是利用寄存器进行书写的,另外一种是利用官方库函数进行书写的.我们通过对比这两种写法,发现库函数居然写的要比寄存器还多,这不是更加不方便了吗.其实库函数和寄存器 ...

  • 【MSP430趣谈】MSP430第八讲之时钟设置

    写到现在已经是第八讲了,希望大家多多支持.可能我的行文风格和我们的标题不大符合,趣谈,对吧.但是希望能够仔细的讲到每一点,让所有初学者能够明白.如果大家有不懂的地方也麻烦留言一下,也有帮助我补充和完善 ...

  • 【MSP430趣谈之六】时钟简介与图形化配置方式

    不知道大家现在有没有一点感觉步入单片机的感觉,这次我们来聊一聊关于单片机的"心脏基调",也就是单片的时钟.为什么说是心脏呢?也就是说单片机的运行步伐是靠这个时钟来决定的,按照时钟的 ...

  • 【MSP430趣谈】MSP430第四讲之简谈中断

    上次和大家聊到了GPIO的使用,但是讲的不是很全面,要是全面涉及的话就是我们后面要讲的内容了,这里我们就不多加描述.在后期的讲解中也会慢慢涉及我们没有讲到的一些功能的.今天我们要涉及一个对于单片机来说 ...

  • 【MSP430趣谈】MSP430第三讲

    不知道前两讲中有没有对430有一个大概的概念和印象. 今天就先谈谈我学习的单片机的一些想法和经验吧.我想写这个的原因主要还是希望面对初学单片机的人来说的,对于初学的话我们经常都会去看一些参考书啊,之类 ...