专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
哪位配置过LM3S8962的RTC啊
2019-03-24 15:03
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
8623
8
1058
小弟新手,不知道怎么配8962的RTC,哪位能帮下啊
最好有配好的例子,不胜感激 [
本帖最后由 lee_jl 于 2010-10-7 21:58 编辑
] 此帖出自
小平头技术问答
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
lilong8470
1楼-- · 2019-03-24 16:20
精彩回答 2 元偷偷看……
加载中...
cbuestc
2楼-- · 2019-03-24 21:36
< :TI_MSP430_内容页_SA7 --> 没有8962,只有1138啊
加载中...
cbuestc
3楼-- · 2019-03-24 23:12
应该先产生一个32.786MHZ的脉冲,可以用外部振荡器产生,没有的话就用定时器的PWM功能,如利用定时器0,配置为16位的PWM功能,从端口ccp0端口输出PWM脉冲,脉冲频率为32.768MHZ,具体PWM脉冲程序如下:// 产生32.768kHz方波,为定时器RTC功能提供时钟源
void _32kHz_Init(void)
{
SysCtlPeriEnable(CCP0_PERIPH); // 使能CCP0所在的GPIO端口
GPIOPinTypeTimer(CCP0_PORT , CCP0_PIN); // 配置CCP0所在管脚为Timer功能
SysCtlPeriEnable(SYSCTL_PERIPH_TIMER0); // 使能TIMER0模块
TimerConfigure(TIMER0_BASE , // 配置Timer0A为16位PWM
TIMER_CFG_16_BIT_PAIR | TIMER_CFG_A_PWM);
TimerLoadSet(TIMER0_BASE , TIMER_A , 183); // 设置TimerA初值,决定PWM周期
TimerMatchSet(TIMER0_BASE , TIMER_A , 92); // 设置TimerA匹配值,决定PWM占空比
TimerEnable(TIMER0_BASE , TIMER_A);
}
其中183为PWM计数器装载值,因为该计数器装载值是系统周期的频率时,减少到0,刚好是一秒,故从183减少到零应该是183/时钟频率(秒),假设系统频率是6MHZ则pwm周期是183/6000000(s),即频率是32.786MHZ,占空比是0.5,故匹配值设为92,即在从183减到92时从低电平翻转到高电平。
之后配置定时器1为32位的RTC,设ccp2为前面PWM脉冲接收端,程序如下:
SysCtlPeriEnable(CCP2_PERIPH); // 使能CCP2所在的GPIO端口
GPIOPinTypeTimer(CCP2_PORT , CCP2_PIN); // 配置CCP2管脚为RTC时钟输入
SysCtlPeriEnable(SYSCTL_PERIPH_TIMER1); // 使能定时器模块
TimerConfigure(TIMER1_BASE , TIMER_CFG_32_RTC); // 配置定时器为32位RTC模式
TimerRTCEnable(TIMER1_BASE); // 使能RTC计数
TimerEnable(TIMER1_BASE , TIMER_A); // 使能定时器计数
语言表达欠佳,不知说明白没有
加载中...
fengzhang2002
4楼-- · 2019-03-25 01:17
精彩回答 2 元偷偷看……
加载中...
lee_jl
5楼-- · 2019-03-25 04:43
掉电用的不能是3楼说的那个RTC吧? 是不是要用休眠模块那个RTC啊?
加载中...
lee_jl
6楼-- · 2019-03-25 09:48
休眠模块能可以用32K的晶体么?还是用32K的有源晶振?
加载中...
1
2
下一页
一周热门
更多
>
相关问题
相关文章
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
void _32kHz_Init(void)
{
SysCtlPeriEnable(CCP0_PERIPH); // 使能CCP0所在的GPIO端口
GPIOPinTypeTimer(CCP0_PORT , CCP0_PIN); // 配置CCP0所在管脚为Timer功能
SysCtlPeriEnable(SYSCTL_PERIPH_TIMER0); // 使能TIMER0模块
TimerConfigure(TIMER0_BASE , // 配置Timer0A为16位PWM
TIMER_CFG_16_BIT_PAIR | TIMER_CFG_A_PWM);
TimerLoadSet(TIMER0_BASE , TIMER_A , 183); // 设置TimerA初值,决定PWM周期
TimerMatchSet(TIMER0_BASE , TIMER_A , 92); // 设置TimerA匹配值,决定PWM占空比
TimerEnable(TIMER0_BASE , TIMER_A);
}
其中183为PWM计数器装载值,因为该计数器装载值是系统周期的频率时,减少到0,刚好是一秒,故从183减少到零应该是183/时钟频率(秒),假设系统频率是6MHZ则pwm周期是183/6000000(s),即频率是32.786MHZ,占空比是0.5,故匹配值设为92,即在从183减到92时从低电平翻转到高电平。
之后配置定时器1为32位的RTC,设ccp2为前面PWM脉冲接收端,程序如下:
SysCtlPeriEnable(CCP2_PERIPH); // 使能CCP2所在的GPIO端口
GPIOPinTypeTimer(CCP2_PORT , CCP2_PIN); // 配置CCP2管脚为RTC时钟输入
SysCtlPeriEnable(SYSCTL_PERIPH_TIMER1); // 使能定时器模块
TimerConfigure(TIMER1_BASE , TIMER_CFG_32_RTC); // 配置定时器为32位RTC模式
TimerRTCEnable(TIMER1_BASE); // 使能RTC计数
TimerEnable(TIMER1_BASE , TIMER_A); // 使能定时器计数
语言表达欠佳,不知说明白没有
一周热门 更多>