2 a6930559 a6930559 于 2013.11.12 17:19 提问

at91sam7s64对外部时钟计数时计数值始终为0

at91sam7s64的TC有5个内部时钟源和3个外部时钟可以选择,并且在时钟上升沿计数器加1,现在选择TC1对外部信号计数,外部信号连接到PA26,将PA26复用到外设B即TIOA2,然后选择其作为时钟,且这个引脚是有高低电平变化的,配置的寄存器如下:

*AT91C_PIOA_PDR = 1<<26 ; //PA26禁止IO 使能外设

*AT91C_PIOA_BSR = 1<<26 ; //PA26分配给外设B即TIOA2 PA15分配给外设B即TIOA1

*AT91C_PMC_PCER = 1<<AT91C_ID_PIOA; //使能IO控制器时钟 需要吗? P204说明

*AT91C_TCB_BMR = AT91C_TCB_TC1XC1S_TIOA2 ; //TC_BMR中设置XC1的时钟为TIOA2
*AT91C_PMC_PCER = 1<<AT91C_ID_TC1; //允许TC1口的时钟

*AT91C_TC1_CCR = AT91C_TC_CLKEN; //使能计数时钟

*AT91C_TC1_CMR = AT91C_TC_CLKS_XC1; //设置时钟为XC1
*AT91C_PIOA_ODR = 1<<26 ; //输出禁用
*AT91C_PIOA_PPUDR = 1<<26 ; //上拉电阻禁用 改为PUER的话是使能
*AT91C_TC1_CCR = 0x04; //计数器复位并启动时钟

然后读取*AT91C_TC1_CV的值始终为0,这是哪里不对了?还有就是把*AT91C_TC1_CMR = AT91C_TC_CLKS_XC1; 这句改为选择内部时钟是可以计数的,但是换成外部的XC1就不能,求大神指点

Csdn user default icon
上传中...
上传图片
插入图片