完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
各位大神,当我使用atmel的SAM3x8E芯片设置定时器做1s定时实验时 使用TC0通道0时可以实现功能,但使用TC0的其他通道或是使用TC1和TC2两个定时器都无法实现功能是怎么回事?
以下是我写的代码 其中TC0可以实现功能,TC2却无法实现功能 #include "sam3xa.h" #include "header.h" void Init_output(Pio *p,uint32_t pio_pin) { PMC->PMC_PCER0=1< p->PIO_PER=pio_pin; p->PIO_OER=pio_pin; p->PIO_PUER=pio_pin; } void Init_tc(void) { Init_output(PIOB,PIO_PB20); PMC->PMC_PCER0=(1UL< TC0->TC_CHANNEL[0].TC_CMR=TC_CMR_WAVE //波形模式 |TC_CMR_TCCLKS_tiMER_CLOCK4 //时钟4,:MCK/128 |TC_CMR_WAVSEL_UP_RC; TC0->TC_CHANNEL[0].TC_CCR=TC_CCR_CLKEN|TC_CCR_SWTRG;//时钟使能 ,软件控制 //波形仅上升RC比较时触发 /*设置RC产生中断的时间*/ //TC0->TC_CHANNEL[0].TC_RC=TC_RC_RC(656250);//1s定时 TC0->TC_CHANNEL[0].TC_RC=TC_RC_RC(600100);//(655360);//定时 TC0->TC_CHANNEL[0].TC_SR; TC0->TC_CHANNEL[0].TC_IER=TC_IER_CPCS;//RC比较时产生中断 /*使能TC0中断*/ NVIC_DisableIRQ(TC0_IRQn); NVIC_ClearPendingIRQ(TC0_IRQn); NVIC_SetPriority(TC0_IRQn,1); //NVIC_EnableIRQ(TC0_IRQn); NVIC->ISER[0]=1< } void TC0_Handler(void) { uint8_t status = TC0->TC_CHANNEL[0].TC_SR; /* 判断中断是否为RC比较触发的 */ if (status & TC_SR_CPCS) { if ((PIOB->PIO_ODSR &PIO_PB20)) { PIOB->PIO_CODR = PIO_PB20; } else { PIOB->PIO_SODR = PIO_PB20 ; } } } void Init_tc2(void) { Init_output(PIOB,PIO_PB18); PMC->PMC_PCER0=(1UL< TC2->TC_CHANNEL[0].TC_CMR =TC_CMR_WAVE //波形模式 |TC_CMR_BURST_NONE |TC_CMR_TCCLKS_TIMER_CLOCK3 //时钟4,:MCK/128 |TC_CMR_WAVSEL_UP_RC; //波形仅上升RC比较时触发 TC2->TC_CHANNEL[0].TC_RC=TC_RC_RC(655360);//定时 TC2->TC_CHANNEL[0].TC_IER=TC_IER_CPCS;//RC比较时产生中断 TC2->TC_CHANNEL[0].TC_CCR=TC_CCR_CLKEN|TC_CCR_SWTRG;//时钟使能 ,软件控制 /*使能TC2中断*/ NVIC_DisableIRQ(TC2_IRQn); NVIC_ClearPendingIRQ(TC2_IRQn); NVIC_SetPriority(TC2_IRQn,0); NVIC_EnableIRQ(TC2_IRQn); // NVIC->ISER[0]=1< } //int n=0; void TC2_Handler(void) { uint8_t status = TC2->TC_CHANNEL[0].TC_SR; /* 判断中断是否为RC比较触发的 */ if (status & TC_SR_CPCS) { PIOB->PIO_SODR = PIO_PB18; } PIOB->PIO_SODR = PIO_PB18; } |
|
相关推荐
6个回答
|
|
|
没玩过这个片子,我用的sam4s,给你我的rtt,参考一下,中间用的几个函数,你看看官方的库函数吧
void configure_rtt(uint32_t u32_mdata) { uint32_t ul_previous_time,u32msdata; u32msdata = (uint32_t)(u32_mdata * 32.768); /* Configure RTT for a 1 second tick interrupt */ rtt_init(RTT, u32msdata); ul_previous_time = rtt_read_timer_value(RTT); while (ul_previous_time == rtt_read_timer_value(RTT)); /* Enable RTT interrupt */ NVIC_DisableIRQ(RTT_IRQn); NVIC_ClearPendingIRQ(RTT_IRQn); NVIC_SetPriority(RTT_IRQn, 0); NVIC_EnableIRQ(RTT_IRQn); rtt_enable_interrupt(RTT, RTT_MR_RTTINCIEN); }
最佳答案
评分
|
||
|
|
||
lee_st 发表于 2016-11-8 11:04 好的谢谢 已经解决。 |
|
|
|
|
|
解决就好,有时间一起讨论
|
|
|
|
|
|
|
|
|
|
|
|
互相学习吧,,,,,
|
|
|
|
|
|
我也是一知半解的,都是新人
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
265 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
789 浏览 0 评论
1306 浏览 2 评论
787 浏览 0 评论
【RA4M2-SENSOR开发板评测】Analogue+Timers综合测试
1587 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16900 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 00:47 , Processed in 1.094960 second(s), Total 88, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3095