我造轮子,你造车,创客一起造起来!塔克创新资讯【塔克社区 www.xtark.cn 】【塔克博客 www.cnblogs.com/xtark/

本文介绍X-CTR100控制器 使用处理器内部硬件定时器时间测量功能,可以测量程序代码运行时间。

原理

定时器(Timer)最基本的功能是定时,比如定时发送USART 数据、定时采集AD数据等等。如果把定时器与GPIO 结合起来使用的话可以实现非常丰富的功能,可以测量输入信号的脉冲宽度,可以生产输出波形。定时器生产PWM控制电机状态是工业控制普遍方法,这方面知识非常有必要深入了解。

STM32F407控制器有2 个高级控制定时器、10 个通用定时器和2 个基本定时器。控制器上所有定时器都是彼此独立的,不共享任何资源。

本文使用基础定时器TIM6,实现最基本的时间测量功能。该定时器的主要模块由一个 16 位递增计数器及其相关的自动重载寄存器组成。计数器的 时钟可通过预分频器进行分频。

计数器、自动重载寄存器和预分频器寄存器可通过软件进行读写。即使在计数器运行时也可执行读写操作,框图如下。

例程

本例程实现X-CTR100 TIM6时间测量功能。

硬件说明

硬件资源:

  • 串口UART1

硬件连接:

使用MicroUSB数据线连接X-CTR100 COM接口。

软件生态

X-SOFT软件生态,X-API文件如下。

ax_timer.c——X-CTR100 定时器时间测量源文件

ax_timer.h——X-CTR100 定时器时间测量头文件

操作函数如下:

void AX_TIMER_TIM6_Init(uint16_t period); //TIM6初始化

void AX_TIMER_TIM6_SetCounter(uint32_t count); //TIM6设置计数器数值

uint32_t AX_TIMER_TIM6_GetCountert(void); //TIM6获取计数器数值

AX_TIMER_TIM6_Init()函数可以设置计数周期,单位为us。

软件说明

测量AX_Delayus()函数延时1000us时间,主程序如下。

int main(void)

{

    uint32_t tmp;

 

    //X-CTR100初始化

    AX_Init(115200);

    printf("***X-CTR100 舵机控制例程***\r\n\r\n");

 

    //模块初始化及配置

    AX_TIMER_TIM6_Init(10); //计数周期1us

 

                            //X-API测试:16路舵机控制测试    

    printf("*16路舵机控制测试\r\n");

 

    while (1)

    {

        //测量10us

        AX_TIMER_TIM6_SetCounter(0); //TIM6 设置计数器数值

        AX_Delayus(1000);

        tmp = AX_TIMER_TIM6_GetCountert(); //获取计数器数值

 

        printf("测量时间:%d us\r\n", tmp);

        AX_Delayms(1000);

    }

}

实现效果

运行效果如下图所示。

    

总结

通过本文学习,掌握X-CTR100控制器 基础定时器的使用。

玩转X-CTR100 l STM32F4 l 定时器时间测量的更多相关文章

  1. 玩转X-CTR100 l STM32F4 l 舵机控制

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器的舵机控制,X-CTR ...

  2. 玩转X-CTR100 l STM32F4 l ADC 模拟数字转换

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 AD转换接 ...

  3. 玩转X-CTR100 l STM32F4 l DRV8825 A4988 步进电机控制

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器控制步进电机 ...

  4. 玩转X-CTR100 l STM32F4 l 基础例程printf、LED、蜂鸣器、拨码开关、位带操作

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器基础板载资源 ...

  5. 玩转X-CTR100 l STM32F4 l MPU6050加速度陀螺仪传感器

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 板载加速度 ...

  6. 玩转X-CTR100 l STM32F4 l X-CTR100与树莓派搭建机器人平台

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器与树莓派Linux系统 ...

  7. 玩转X-CTR100 l STM32F4 l UCOS-III移植

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 概述 前后台系统 简单的小型系统设计一般是基于前后台 ...

  8. 玩转X-CTR100 l STM32F4 l PS2无线手柄

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] SONY的PS2无线手柄是索尼游戏机的遥控手柄,控制 ...

  9. 玩转X-CTR100 l STM32F4 l DSP指令集性能测试

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 DSP库的 ...

随机推荐

  1. VS2008版本引入第三方dll无强签名

    sn.exe 和ilasm.exe 是系统自带程序.如果显示无此命令,可以从“我的电脑”直接搜索. 将dll文件放入目录下,用VS开发人员命令执行以下命令即可.(以Interop.Scripting. ...

  2. java --> Long和long/Integer和int

    java中非一切是对象,因为还有基本数据类型. 基本数据类型有对应的基本数据类型打包器,它们的基本数据类型打包器是对象. j2se 5.0引入装箱和拆箱,它们是基本数据类型和基本数据类型打包器的关系 ...

  3. JS获取系统时间--JavaScript基础

    1.网页中实时显示当前时间 <!DOCTYPE html><html lang="en"><head> <meta charset=&qu ...

  4. ADO.NET Entity Framework学习笔记(3)ObjectContext

    ADO.NET Entity Framework学习笔记(3)ObjectContext对象[转]   说明 ObjectContext提供了管理数据的功能 Context操作数据 AddObject ...

  5. gem "searchkick"(4500✨) 智能搜索(使用Elastic search)(Gorails:建立一个侧边搜索栏)

    Searchkick

  6. Tensorflow手写数字识别---MNIST

    MNIST数据集:包含数字0-9的灰度图, 图片size为28x28.训练样本:55000,测试样本:10000,验证集:5000

  7. day 7 -10 集合,文本、文件操作,函数

    day7 一.回顾 1.列表和字典在循环里边尽量不要删除元素,很麻烦 2.元组:如果元组里边只有一个逗号,且不加逗号,次元素是什么类型,就是什么类型. 二.集合 ''' 集合:可变的数据类型,它里边的 ...

  8. selenium 简单粗暴的定位方法

  9. mysql排序的中文首字母排序和自定义排序

    select * FROM organ_new where city_code = 'SZ0755' and organ_type = 'H' and state = '1' ORDER BY FIE ...

  10. java中堆与栈的区别

    堆与栈都是java中常用的存储结构,是内存中存放数据的地方. 堆:主要存放运行时创建(new)的对象.主要用于储存对象,存取速度慢,可以运行时动态分配内存,生命周期不需要提前确定. 栈:主要存放基础类 ...