完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 michael_llh 于 2020-2-24 11:13 编辑 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中配置路径。不再做一边了哈。
driverlib_2_21_00_08.part01.rar
(10 MB, 下载次数: 260
)
driverlib_2_21_00_08.part02.rar
(10 MB, 下载次数: 222
)
driverlib_2_21_00_08.part03.rar
(2.26 MB, 下载次数: 77
)
|
|
相关推荐
|
|
|
|
|
|
|
|
|
|
|
|
|
|
写得挺好,明白了许多.感谢.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
找到了,虽然我用的G2系列的(G2系列只有MSP430ware,木有diverlib好伤心),但看你的教程还是受益匪浅,谢谢 |
|
|
|
|
|
恩,G2是没有库函数,记得我传了一份G2的资料哦,你可以在论坛看下哦 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
2969个成员聚集在这个小组
加入小组2752 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3254 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2293 浏览 1 评论
4734 浏览 1 评论
2510 浏览 1 评论
1031浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3256浏览 2评论
2753浏览 1评论
1158浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-2 12:13 , Processed in 1.406787 second(s), Total 82, Slave 73 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号