5023|10

1560

帖子

24

TA的资源

五彩晶圆(初级)

楼主
 

【TI首届低功耗设计大赛】MSP430FR5969学习之按键中断 [复制链接]

经过一上午的实验,终于把按键中断部分给调通了。
几个要点如下:


1  如果不配置时钟,默认情况会是MCLK = SMCLK = 1MHz。
2  阻塞延时可以照如下方法给出
#define CPU_F                            ((double)1000000)
#define delay_us(x)                      __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x)                      __delay_cycles((long)(CPU_F*(double)x/1000.0))

3  GPIO的配置要遵循以下顺序
a. Initialize Ports: PxDIR, PxREN, PxOUT, and PxIES
b.  Clear LOCKLPM5
c. If not wake-up from LPMx.5: clear all PxIFGs to avoid erroneous port interrupts
d. Enable port interrupts in PxIE


4 对于MSP430FR系列单片机,不用的引脚要配置为输出模式并悬空!

5 执行
__bis_SR_register(LPMx + GIE);//LMP0 LMP1...
这条语句后MCLK已经关闭,不会再往下执行代码。

6 中断响应函数写法如下:

//中断函数
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=PORT1_VECTOR
__interrupt
#elif defined(__GNUC__)
__attribute__((interrupt(PORT1_VECTOR)))
#endif
void Port1_ISR(void)
{
        GPIO_clearInterruptFlag(GPIO_PORT_P1, GPIO_PIN1);//清中断标志位
        GPIO_toggleOutputOnPin(GPIO_PORT_P1, GPIO_PIN0);//LED1切换
}


7 实验结果
LED1 做1000ms周期亮灭,LED2由S2触发。结果如下所示:





8  实验代码
interrupt.rar (1.1 KB, 下载次数: 71)


9 尚未解决的问题


三个警告如下:
warning #10420-D: For FRAM devices, at start up, the GPO power-on default high-impedance mode needs to be disabled to activate previously configured port settings. This can be done by clearing the LOCKLPM5 bit in PM5CTL0 register.
remark #10372-D: (ULP 4.1) Detected uninitialized Port A in this project. Recommend initializing all unused ports to eliminate wasted current consumption on unused pins.
remark #10372-D: (ULP 4.1) Detected uninitialized Port B in this project. Recommend initializing all unused ports to eliminate wasted current consumption on unused pins.


很奇怪,Port A 和 Port B我这板子上根本没看到啊,怎么初始化呀?
PM5CTL0 &= ~LOCKLPM5; 语句替换 PMM_unlockLPM5();之后#10420-D 警告不再显示。奇怪了,难道这两条语句不一样的作用吗?


因为没找到相应的网络资源,还请各位不吝指教。谢谢~


最新回复

学习了   详情 回复 发表于 2016-2-20 21:03
 
点赞 关注
个人签名这孩子,成熟的象征,理智的典范。

回复
举报

1560

帖子

24

TA的资源

五彩晶圆(初级)

推荐
 
数码小叶 发表于 2014-8-23 14:22
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=PORT1_VECTOR
_ ...

是啊,CCS IAR 用的是同一种中断写法,还有GNU C 编译器也是一种中断写法。所以用了#if defined #else #endif
 
个人签名这孩子,成熟的象征,理智的典范。
 

回复

5304

帖子

453

TA的资源

五彩晶圆(高级)

沙发
 
Port A 和 Port B
是指16位宽的 I/Os

如果我们一般用8位宽的I/Os,就用P1,P2

PA:P1,P2
PB:P3,P4

要注意咯!

点评

懂了。哈哈,原来如此,还真是这样的。还是您厉害,有种豁然开朗的感觉呐! 非常非常感谢!  详情 回复 发表于 2014-8-22 16:14
 
 
 

回复

5304

帖子

453

TA的资源

五彩晶圆(高级)

板凳
 

进入属性中,去掉勾看看
 
 
 

回复

5304

帖子

453

TA的资源

五彩晶圆(高级)

4
 
建议还是警告不要屏蔽掉!
 
 
 

回复

1560

帖子

24

TA的资源

五彩晶圆(初级)

5
 
蓝雨夜 发表于 2014-8-22 15:55
Port A 和 Port B
是指16位宽的 I/Os


懂了。哈哈,原来如此,还真是这样的。还是您厉害,有种豁然开朗的感觉呐!
非常非常感谢!

点评

我也有时看看PDF! 对他基本还是先了解了解! 程序方面TI已经提供了DEMO和LIB了!  详情 回复 发表于 2014-8-22 16:18
 
个人签名这孩子,成熟的象征,理智的典范。
 
 

回复

5304

帖子

453

TA的资源

五彩晶圆(高级)

6
 
lonerzf 发表于 2014-8-22 16:14
懂了。哈哈,原来如此,还真是这样的。还是您厉害,有种豁然开朗的感觉呐!
非常非常感谢!

我也有时看看PDF!

对他基本还是先了解了解!

程序方面TI已经提供了DEMO和LIB了!
 
 
 

回复

1297

帖子

2

TA的资源

纯净的硅(中级)

7
 
都是高手
 
 
 

回复

2549

帖子

0

TA的资源

五彩晶圆(初级)

8
 
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=PORT1_VECTOR
__interrupt
#elif defined(__GNUC__)
__attribute__((interrupt(PORT1_VECTOR)))
#endif



上次就想问这个中断函数怎么写的这么复杂?是为了兼容编译器么

点评

是啊,CCS IAR 用的是同一种中断写法,还有GNU C 编译器也是一种中断写法。所以用了#if defined #else #endif  详情 回复 发表于 2014-8-23 15:39
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(初级)

10
 
对学习MSP430很有用,谢谢楼主分享。
 
 
 

回复

33

帖子

0

TA的资源

一粒金砂(中级)

11
 
学习了
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表