完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 一只耳朵怪 于 2018-6-7 15:58 编辑
1. 在使用RTC时,先要将RTC分频为1HZ, 这个寄存器我已找到了(Register 22: GPTM RTC Predivide (GPTMRTCPD), offset 0x058),但是Firmware中使用哪个函数去设置呢? 2. 在使用RTC时,预加载一个计数匹配置,这里是要加载到“GPTM timer A 匹配寄存器(GPTMTAMATCHR),偏移量 0x030” 还是“GPTM Timer B 匹配寄存器(GPTMTBMATCHR),偏移量 0x034”。 我的目的是要做一个1S的周期定时,准备触发AD一秒采集一次数据(暂没加进去),同时方便后面做万年历。 以下跟据TI例程更改RTC配置,不知配置是否还有问题? #include #include #include "inc/tm4c123gh6pm.h" #include "inc/hw_memmap.h" #include "inc/hw_types.h" #include "driverlib/sysctl.h" #include "driverlib/interrupt.h" #include "driverlib/gpio.h" #include "driverlib/timer.h" int main(void) [ //uint32_t ui32Period; // To set system clock is 40Mhz and used the PLL and External 16Mhz SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3); SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0); TimerConfigure(TIMER0_BASE, TIMER_CFG_RTC); //TIMER_CFG_PERIODIC); //ui32Period = (SysCtlClockGet() / 10) / 2; //TimerLoadSet(TIMER0_BASE,TIMER_A, ui32Period -1); //TIMER_O_TAMATCHR TimerMatchSet(TIMER0_BASE,TIMER_A, 2); // Load value to GPTM Timer A Match -->GPTMTAMATCHR IntEnable(INT_TIMER0A); TimerIntEnable(TIMER0_BASE, TIMER_RTC_MATCH); // Enable "RTCIM" IntMasterEnable(); //TimerEnable(TIMER0_BASE, TIMER_A); TimerRTCEnable(TIMER0_BASE); // "RTCEN=1" of GPTMCTL while(1) [ ] ] void Timer0IntHandler(void) [ // Clear the timer interrupt // TimerIntClear(TIMER0_BASE, TIMER_TIMA_TIMEOUT); TimerIntClear(TIMER0_BASE, TIMER_RTC_MATCH); // Clear the RTC interrupt, Via clear The RTCCINT bit of GPTMICR // Read the current state of the GPIO pin and // write back the opposite state if(GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_2)) [ GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, 0); ] else [ GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, 4); ] ] |
|
相关推荐
4个回答
|
|
Daojin,
1. GPTM的RTC模式中,是自动将32.768KHz的时钟分频成1Hz的时钟,无需设置分频值。寄存器(Register 22: GPTM RTC Predivide (GPTMRTCPD), offset 0x058)是一个只读寄存器。 2.当timer设置为RTC模式时,Time A和Time B将工作在组合模式,即组合成一个32位(16/32 Timer)或者64位(32/64 Timer)counter. 因此,具体的设置方法参考datasheet里面的 Accessing Concatenated 16/32-Bit GPTM Register Values和Accessing Concatenated 32/64-Bit Wide GPTM Register Values章节。在调用相关API函数设置时,使用TIMER_A参数即可。 3.使用TIMER的RTC模式是,需要在CCP0输入32.768KHz的时钟信号。 另外,如果想要制作万年历,建议使用Hibernation模式下的RTC。具体的例程参考TIVAWARE下的Hibernation工程. best ragards Wellin Zhang Wellin |
|
|
|
另外补充一点,使用ccp0输入32.768KHz时钟时,要配置相应的IO口。
附件是基于123G launchpad的测试程序,PD0输出32.768KHz的PWM,PB6为CCP0输入。 将Launchpad的PD0和PB6连在一起即可测试。 LED将以1Hz的频率闪烁。另外,会通过串口输出相关的match寄存器的值。 Best Regards Wellin Zhang Wellin |
|
|
|
kingnet_5220 发表于 2018-6-7 04:33 Hi Wellin, 非常感谢!你的解释很给力! B.R Wangdaojin |
|
|
|
kingnet_5220 发表于 2018-6-7 04:33 Hi Wellin, 非常感谢!你的解释很给力! B.R Wangdaojin |
|
|
|
只有小组成员才能发言,加入小组>>
341 浏览 1 评论
539 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
781 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
655 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1138 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
69浏览 29评论
209浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
256浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
205浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
65浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 08:47 , Processed in 0.968835 second(s), Total 84, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号