打印

新手求助,单片机的GPIO引脚是怎么复用的,MSP430G2452

[复制链接]
2828|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
TI赠送的板子,launchpad,正在学MSP430G2452这个芯片。
想验证一下这个芯片定时器产生PWM输出的功能。
看了2452的PDF,引脚是这样复用的

我原来想用P1.4/TA0.2/SMCLK/A4/VREF+/VEREF+/CA4/TCK这个引脚,使用
捕捉通道的设定有这些模式,我选用的是模式7

所有都配置好以后,发现P1.4引脚上出现的波形是1.00xMHz的方波,也就是说,P1.4这个引脚的第二功能,配置成SMCLK了,不是我想要的TA0.2。
请问,我该怎么配置才行?
PS:
后来我把2号通道换成1号,配置好P1.2/TA0.1/A2/CA2这个引脚,就能输出正常的PWM波形,配置情况完全copy通道2的配置。

相关帖子

沙发
NE5532| | 2013-9-12 13:19 | 只看该作者
你的做法是对的,唯一可能出错的地方就是资料错了,或者你看错了,理解错了。建议楼主按英文数据手册走,中文的N多错误。

使用特权

评论回复
板凳
wangke2010|  楼主 | 2013-9-12 13:26 | 只看该作者
NE5532 发表于 2013-9-12 13:19
你的做法是对的,唯一可能出错的地方就是资料错了,或者你看错了,理解错了。建议楼主按英文数据手册走,中 ...

看的确实是中文翻译的资料,确实也有点错误(我是新手,都能看出来的错误),没看出来的错误……
额,不说了,谢谢您的指导

使用特权

评论回复
地板
NE5532| | 2013-9-12 14:27 | 只看该作者
wangke2010 发表于 2013-9-12 13:26
看的确实是中文翻译的资料,确实也有点错误(我是新手,都能看出来的错误),没看出来的错误……
额,不 ...

呵呵,所以我们都养成了不看中文的习惯。

使用特权

评论回复
5
wangke2010|  楼主 | 2013-9-12 18:31 | 只看该作者
又研究研究了CCS这个IDE。
发现有这么一个好玩的功能。
如图

用这个工具可以很快的配置寄存器,看到了红圈里的内容。
同时也找到这么一段代码
BCSplus.regs.LFXT1CLKHz = 12000.0;
BCSplus.regs.BCSCTL3.LFXT1S = BCSplus.defs.LFXT1S_2;
BCSplus.regs.BCSCTL1.DIVA = BCSplus.defs.DIVA_0;
BCSplus.smclkPin[0] = 0;
最后一句代码,应该就是说控制SMCLK的输出情况。
只是在寄存器里没有找到类似的位,当然在msp30g2452.h这个文件里也没有找到。
应该是一个比较偏门的寄存器

使用特权

评论回复
6
dirtwillfly| | 2013-9-12 21:36 | 只看该作者


BCSplus部分都是在ti.mcu.msp430.csl.clock.BCSplus模块进行定义的

使用特权

评论回复
7
wangke2010|  楼主 | 2013-9-13 10:48 | 只看该作者
dirtwillfly 发表于 2013-9-12 21:36
BCSplus部分都是在ti.mcu.msp430.csl.clock.BCSplus模块进行定义的

能详细解释一下这个寄存器吗?还有为什么不少资料根本就没有提及到这个寄存器

使用特权

评论回复
8
dirtwillfly| | 2013-9-13 12:32 | 只看该作者
wangke2010 发表于 2013-9-13 10:48
能详细解释一下这个寄存器吗?还有为什么不少资料根本就没有提及到这个寄存器 ...

这个应该是Grace 工具对msp430寄存器的一种重新定义或者封装,不是新的寄存器。但昨天我也翻了翻手头的资料,没找到ti.mcu.msp430.csl.clock.BCSplus模块的源代码,不知道是TI不公开,还是我没找到这方面的资料。
如果有时间,可以看一下编译过程中产生的汇编程序,看看是对哪些地址操作的,就知道是不是新的寄存器了。

使用特权

评论回复
9
wangke2010|  楼主 | 2013-9-13 17:20 | 只看该作者
最新进展;
先上成果

示波器上的波形,一个是捕获通道1产生的,另外一个是捕获通道2产生的。
先说说配置问题,首先上场的是msp430g2452.h
SFR_8BIT(P1IN);                               /* Port 1 Input */
SFR_8BIT(P1OUT);                              /* Port 1 Output */
SFR_8BIT(P1DIR);                              /* Port 1 Direction */
SFR_8BIT(P1IFG);                              /* Port 1 Interrupt Flag */
SFR_8BIT(P1IES);                              /* Port 1 Interrupt Edge Select */
SFR_8BIT(P1IE);                               /* Port 1 Interrupt Enable */
SFR_8BIT(P1SEL);                              /* Port 1 Selection */
SFR_8BIT(P1SEL2);                             /* Port 1 Selection 2 */
SFR_8BIT(P1REN);                              /* Port 1 Resistor Enable */
有两个PxSEL相关的,PxSEL和PxSEL2
来自于MSP430x2xx Family User's Guide的介绍

诸位英语比我差的应该没有几个了,就不班门弄斧了。
最后贴上我的代码吧,小白最喜欢贴代码了
定时器相关
void timer_init(){
TACCR1=450;
TACCTL1|=CM_0+CCIS_2+OUTMOD_7;//
TACCTL1&=~CAP;//设置为捕获模式
TACCR2=300;
TACCTL2|=CM_0+CCIS_2+OUTMOD_3;
TACCTL2&=~CAP;
TACCR0=1000;
TACTL|=(TASSEL_2+ID_0+MC_1+TACLR);
}
void timer_a2init(){
P1SEL|=BIT2+BIT6+BIT4;//开启P1.2、P1.6的第二功能 TA0.1,P1.4的第二功能TA0.2
P1SEL2|=BIT4;//启动P1.4引脚第二功能的低优先级功能
timer_init();
}
其中,这个
P1SEL2|=BIT4;//启动P1.4引脚第二功能的低优先级功能
是这次问题诱因

使用特权

评论回复
10
wangke2010|  楼主 | 2013-9-13 17:37 | 只看该作者
像我一样的小白以后看中文资料要长个心眼了,中文资料有可能过度裁剪了,剪得需要的东西都省略掉了。
有问题还是赶紧翻英文资料吧,原厂的最好

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

187

帖子

0

粉丝