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
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
微机原理与接口技术 8253计数器
8253计数器实验 一、实验要求:利用8086外接8253可编程定时器/计数器,可以实现对外部事件进行计数。 二、实验目的:1、学习8086与8253的连接方法。2、学习8086对8253的控制方法。 三、实验电路及连线图:用硬导线将8253片选信号CS53接至138译码200-207,将8279的片选信号CS79接至208-20F,GATE0接至电源+5V,CLK0接至脉冲源上的UP,OUT0接至一个发光管(L0)。 四、实验说明: 本实验中计数器按方式0工作。即十六位二进制计数器。当计数设置好后,计数器就开始计数。如果要读入计数器的值,要先锁存计数值,才能读到计数值。本实验所设计数值为5,也就是外部5个脉冲,计数器值加1。每按一次脉冲源,数码管显示数减一,结束时OUT脚输出一个高电平。实验时,可以将OUT0接到LED上,观察计数器是否工作。
AT91SAM7S64入门笔记----精准延时的实现
<br />       在嵌入式开发中,延时是非常重要的,这是接口协议实现的基础.在51,AVR等8位单片机中,精准延时是比较容易实现的,因为指令的执行时间是比较容易计算的.但在ARM处理器中却没有那么容易计算,因为其指令执行是采用多级(一般为3级,5级)流水线,指令执行时间难以知道.当然如果对其流水线的执行情况很清楚也是可以计算的.因此大多时候都会采用定时器进行延时,这种方法优点是延时较精准,缺点是增大了硬件开销(需要一个定时器)以及可移植性差.如果不在乎一个定时器以及可移植性,这种方法是值得推荐的,后
8254定时/计数器应用
 8254定时/计数器应用实验1  实验目的1. 掌握8254的工作方式及应用编程。2. 掌握8254典型应用电路的接法。2  实验设备PC机一台,TD-PITE实验装置一套。3  实验内容1. 计数应用实验。编写程序,应用8254的计数功能,使用单次脉冲模拟计数,使每当按动‘KK1+’5次后,产生一次计数中断,并在屏幕上显示一个字符‘M’。2. 定时应用实验。编写程序,应用8254的定时功能,产...
STM32 定时器用于外部脉冲计数
因为用stm32f103c8作主控制器,来控制小车,小车的转速由两路光电编码盘输入(左右各一路).因此想到外部时钟触发模式(TIM——ETRClockMode2Config)。      可以试好好久,发现TIM1不能计数,到网上查了很久,也没有找到相关的文章,开始怀疑TIM1是不是需要特殊设置。经过很久的纠结,终于找到了问题——其实是我自己在GPIO设置的时候,后面的不小心覆盖了前面的了。
STM32 定时器用于外部脉冲计数,修改版,解决3..4库对应的无响应外部脉冲的问题
这里先总结一下各个time对应的gpio TIMER1   -->  PA12 TIMER2   -->  PA0   TIMER3   -->  PD2 TIMER4   -->  PE0 暂时够了,更多的建议参考数据手册 基于库3.4代码,网上参考了很多代码,一直有问题,估计是库版本的问题,引用下边的一片文章,红色文字为本人注释和修改。
STC89C52RC数码管秒表程序编写
数码管显示秒表 具体要求,采用动态扫描的方式让,6个数码管前三个显示秒数,后两个显示毫秒。第四个不用。秒数精确到1%。
计数范围为0~999的BCD计数器
计数范围为0~999的BCD计数器并在七段显示数码管上显示出来加法计数器的动作是,每次时钟脉冲信号CLK的上升沿到来时,计数器会将计数值加1。作为计数器还应该由一个使能端EN和清零端CLR:当使能端EN为高电平“1”时,计数器开始计数;当使能端EN为低电平“0”时,计数器停止计数;清零端CLR一般由同步清零和异步清零两种,当清零端CLR为高电平“1”时有效;反之无效。
利用8031的定时/计数器T1对外部事件进行计数
利用8031的定时/计数器T1对外部事件进行计数。 设某生产线包装工序上,生产线的输送带每送进一个产品到包装机,“SP”端就输出一个脉冲到8031的T1端。要求每送进来10个产品,CPU就从P1.1输出一个信号去控制包装机工作。 2009-11-17 20:39       悬赏分:10 - 解决时间:2009-11-29 17:26 ;==============================
stm32通用定时器用做外部脉冲计数器的例程
最近几天要用到stm32对外部输入脉冲进行计数,
系统时钟节拍(SysTick)
一、系统时钟节拍(SysTick)控制与状态寄存器 寄存器  :SysTick_CTRL——32位寄存器 作用    :使能SysTick。 地址    :0xE000E010 访问类型:r/w 复位状态:0x00000000 SysTick控制与状态寄存器的位分配 bit16:COUNTFLAG, 从上次读取定时器开始,如果定时器计数到0,则返回1。读取时清零。 bit2