完善资料让更多小伙伴认识你,还能领取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 好的谢谢 已经解决。 |
|
|
|
解决就好,有时间一起讨论
|
|
|
|
|
|
|
|
互相学习吧,,,,,
|
|
|
|
我也是一知半解的,都是新人
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
377 浏览 0 评论
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
536 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
540 浏览 0 评论
950 浏览 0 评论
如何用OpenCV的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板
1403 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11760 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 08:10 , Processed in 0.673728 second(s), Total 90, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号