K60的DMA多路脉冲计数

  最近在做飞思卡尔的智能车,由于要用到两路脉冲计数,但是由于K60只有3个FTM, 一个分给电机,一个分给舵机,另一个用于正交解码。 所以FTM用不到了,只能另行办法。LPT虽然也可以计数,但是却只能计数一路而已,后来上网查了一下,发现可以用DMA来实现多路脉冲计数。

  但是由于不知道DMA的触发的方式是以PORT的,所以我选择用了PTA25和PTA27来触发DMA,结果发现,能测出来一路脉冲数是正确的,另一路却是刚才那路的两倍。经过百度查了好多资料,折腾了1天半,还是没找出来错误。于是不小心点开了谷歌,然后查了一下。出来的第一条就是关于这个的。不能不说,谷歌比百度强很多啊。

  原来这个错误是由于K60的DMA是以POART的形式触发的,而不是PIN (不知道这样的说法是否正确,不过大家应该能理解的)。于是我把PTA25换成了PTAD15之后,两路的脉冲计数都正常了。虽然精度不是很高,但是能满足需要了。

  

  希望这个能帮助到大家。最后,我也把在谷歌上面找到的文档也分享出来。供大家参考学习吧! 链接:http://pan.baidu.com/s/1bVjq70 密码:4w5d

时间: 2024-10-17 00:01:15

K60的DMA多路脉冲计数的相关文章

STM32 定时器用于外部脉冲计数(转)

源:STM32 定时器用于外部脉冲计数 STM32 定时器(一)——定时器时间的计算 STM32的定时器是灰常NB的,也是灰常让人头晕的(当然是对于白菜来说的). STM32中的定时器有很多用法: (一)系统时钟(SysTick) 设置非常简单,以下是产生1ms中断的设置,和产生10ms延时的函数: void RCC_Configuration(void) { RCC_ClocksTypeDef RCC_ClockFreq; SystemInit();//源自system_stm32f10x.c

关于STM32F103 脉冲计数的问题

//TIM2_CH2 PWM部分初始化 //PWM输出初始化//arr:自动重装值//psc:时钟预分频数 计数器功能void TIM2_ETR_Init(u16 arr,u16 psc){ //此部分需手动修改IO口设置RCC->APB1ENR|=1<<0; //TIM2时钟使能 RCC->APB2ENR|=1<<2; //使能PORTA时钟 GPIOA->CRL &= 0XFFFFFF0F; //GPIOA->CRL |= 0X00000080;

有效解决Win10用鲁大师ultra dma crc错误计数的恢复发方法

我们在win10系统电脑的使用中,鲁大师是很多小伙伴都在用的扫描的软件,我们可以直接使用来恢复我们的电脑,今天看到有小伙伴在使用的时候出现Win10用鲁大师ultra dma crc错误计数,这个问题怎么恢复呢,今天小编就来跟大家分享一下有效解决Win10用鲁大师ultra dma crc错误计数的恢复发方法. 具体的方法和详细的步骤如下: 原因分析 出现该情况有可能硬盘与主板接触不良,软件误报,或者硬盘质量问题等等. 解决方法: 1.把USB外界排查拔掉,换上一条质量好的SATA数据线,查看问

stm32寄存器版学习笔记06 输入捕获(ETR脉冲计数)

STM32外部脉冲ETR引脚:TIM1-->PA12;TIMER2-->PA0:TIMER3-->PD2;TIMER4-->PE0… 1.TIM2 PA0计数 配置步骤 ①开启TIM2时钟,配置PA0输入 APB1外设复位寄存器 (RCC_APB1RSTR) APB2外设时钟使能寄存器(RCC_APB2ENR) 置1开启.清0关闭. Eg:RCC->APB1ENR|=1<<0; //使能TIM2时钟  RCC->APB2ENR|=1<<2;  

定时/计数器 脉冲计数

定时/计数器(Timer/counter)是单片机芯片中最基本的外围接口,它的用途非常广泛,常用于测量时间.速度.频率.脉宽.提供定时脉冲信号 等.相对于一般8位单片机而言,AVR不仅配备了更多的定时/计数器接口,而且还是增强型的,功能非常强大.ATmega128一共配置了2个8位和2个 16位,共4个定时/计数器,本小节重点对它的一些增强功能的应用做基本的介绍. 5.9.1 预分频器   定时/计数器最基本的功能就是对脉冲信号计数,当计数器计满后(8位为255,16位为65535),再来一个脉

单片机计数脉冲

#include <pic.h> __CONFIG(0x3004);//(0X30C4); #define T0_40MS 100    // 定义 TMR0 延时10MS 的时间常数 #define T1_100MS 40536 #define        DN                        RA5        //Motor rise                 2        DN #define        UP                       

智能车学习(二十三)&mdash;&mdash;K60单片机注册中断函数

一.头文件: #ifndef __ISR_H #define __ISR_H 1 #include "include.h" /* 重新定义中断向量表 * 先取消默认的中断向量元素宏定义 #undef VECTOR_xxx * 在重新定义到自己编写的中断函数 #define VECTOR_xxx xxx_IRQHandler * 例如: * #undef VECTOR_003 * #define VECTOR_003 HardFault_Handler 重新定义硬件上访中断服务函数 *

关于stm32的正交解码

关于正交解码,我先解释何为正交解码,,,,其实名字挺高大上的,,,,还是先说编码器吧 看一下我用过的一种编码器 编码器的 线 数 ,是说编码器转一圈输出多少个脉冲,,,如果一个编码器是500线,,,说明这个编码器转一圈对应的信号线会输出500个脉冲,,,,为什么说是对应的,,,对于上面的编码器而言是这样的,,,,但是有的编码器里面有好多线,,,有的信号线是转一圈就输出对应多少线的脉冲,,,有的信号线是转一圈就输出一个脉冲,,,,这就要看编码器的资料了...... 看我上面用过的这个编码器,,使用

单片机(simple chip microcomputer)概论、51单片机、MCS-51单片机、STM32、ARM

catalogue 1. 单片机概论 2. 51单片机 3. MCS-51单片机 4. QX-MINI51开发板(STC89C52芯片) 5. STM32单片机 6. stm32f103zet6开发板实验 1. 单片机概论 0x1: 仿真器 单片机应用系统的软硬件调试需要专门的开发工具,称为"单片机开发系统"或"仿真机".常用的开发方式是把开发系统(例如PC)中的CPU和RAM暂时出借给用户系统,利用开发系统对用户系统的软硬件进行调试(又称仿真),然后将调试好的程序