a6930559 2013-11-12 09:19
浏览 1083

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就不能,求大神指点

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
    • ¥15 如何在scanpy上做差异基因和通路富集?
    • ¥20 关于#硬件工程#的问题,请各位专家解答!
    • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
    • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
    • ¥30 截图中的mathematics程序转换成matlab
    • ¥15 动力学代码报错,维度不匹配
    • ¥15 Power query添加列问题
    • ¥50 Kubernetes&Fission&Eleasticsearch
    • ¥15 報錯:Person is not mapped,如何解決?