回答

收藏

【教程11】疯壳·ARM功能手机-定时器实验教程

#拆解/开源硬件 #拆解/开源硬件 1649 人阅读 | 0 人回复 | 2022-08-18

ARM功能手机
——疯壳·开发板系列
定时器实验教程   





    图1


    8LED硬件电路

        板子中有一个可控LED,接在DA14580的P24引脚,LED串联1K的限流电阻,如下图所示:

   
    图2

    第二节 Timer寄存器

    2.1 Timer介绍

    软件定时器模块包含两个定时器模块,它们可以通过软件控制、编程并用于各种任务。
    2.1.1 Timer0

    定时器0有16位的通用定时器;可以产生两路脉宽调制信号;可编程的输出频率;可编程的占空比;可编程的软件中断。
    2.1.2 Timer2

    定时器2有14位的通用定时器;可以产生3路脉宽调制信号;输入时钟频率为16MHz;可编程的输入频率;占空比可调;用于白色LED的亮度控制。

    2.2 寄存器介绍
    2.2.1 定时器0控制寄存器

   
    图3
    15:4位:保留不使用;
    3位:PWM模式选择,’0’表示PWM信号为高时输出’1’,’1’表示PWM信号为高时输出快时钟信号的二分频,则输出频率范围为1~8MHz;
    2位:定时器0的时钟分频,为’1’使用选择的时钟源频率,为’0’使用选择的时钟源进行10分频,注意这个值适用于计数寄存器;
    1位:时钟源选择,’1’使用快时钟(16、8、4、2MHz),’0’使用慢时钟(32KHz);
    0位:定时器0控制位,’0’表示定时器0关闭并处于复位状态,’1’定时器0运行。

    2.2.2 定时器0计数控制寄存器

   
    图4
    定时器0计数重新装载值,如果读取该寄存器则返回当前计数器的值。
    2.2.3 定时器0高电平重新装载值

   
    图5
    定时器0高电平重新装载值,如果读取该寄存器则返回定时器0的计数值。
    2.2.4 定时器0低电平重新装载值

   
    图6
    定时器0低电平重新装载值,如果读取该寄存器则返回定时器0的计数值。
    2.2.5 PWM2占空比

   
    图7
    PWM2信号的占空比。
    2.2.6 PWM3占空比

  
    图8
    PWM3信号的占空比。
    2.2.7 PW***占空比

   
    图9
    PW***信号的占空比。
    2.2.8 PWM2,3,4的频率

   
    图10
    PWM2、3、4信号的频率,三个信号频率相同。

    2.2.9 PWM2,3,4控制寄存器

   
    图11
    2位:硬件暂停使能,为’1’则硬件可以停止PWM2、3、4。
    1位:软件暂停使能,为’1’则PWM2、3、4暂停。
    0位:PWM信号使能,为’1’则PWM2、3、4使能。

    2.3 寄存器配置讲解
    #define CLK_PER_REG             (* ( volatile uint16*)0x50000004)
    #define TIMER0_CTRL_REG         (* ( volatile uint16*)0x50003400)
    #define TIMER0_ON_REG           (* ( volatile uint16*)0x50003402)
    #define TIMER0_RELOAD_M_REG     (* ( volatile uint16*)0x50003404)
    #define TIMER0_RELOAD_N_REG      (* ( volatile uint16*)0x50003406)
    #define PWM2_DUTY_CYCLE          (* ( volatile uint16*)0x50003408)
    #define PWM3_DUTY_CYCLE          (* ( volatile uint16*)0x5000340A)
    #define PW***_DUTY_CYCLE          (* ( volatile uint16*)0x5000340C)
    #define TRIPLE_PWM_FREQUENCY     (* ( volatile uint16*)0x5000340E)
    #define TRIPLE_PWM_CTRL_REG       (* ( volatile uint16*)0x50003410)
    启动Timer0模块的时钟:CLK_PER_REG |= 0x0008;
    定时器0初始化,选择高频时钟,正常PWM模式,无分频,则TIMER0_CTRL_REG = 0X0E;
    设置计数值为1000,高电平为500,低电平为200,则TIMER0_ON_REG=1000; TIMER0_RELOAD_M_REG=500; TIMER0_RELOAD_N_REG=200;
    开定时器中断NVIC_SetPriority (SWTIM_IRQn, 254); NVIC_EnableIRQ(SWTIM_IRQn);
    启动定时器TIMER0_CTRL_REG = (TIMER0_CTRL_REG|0x01);



    第三节 定时器实验

    实验需要使用的模块有:手机开发板底板,Jlink调试工具,杜邦线、3.7V锂电池或Mocro USB线。
    使用JLINK通过杜邦线连接手机蓝牙位于手机主控底板,连接方式如下:
    (1)JLINK一端只需要使用杜邦线连接JLINK的SWC、SWD、GND三个引脚,如下图所示:

  
  
    图12
    (2)手机蓝牙一端需要使用杜邦线连接上方右侧的J3三个引脚,与JLINK的连接引脚一一对应,分别为SWC-->SWCLK、SWD-->SWDIO、GND-->GND,如下图所示:

   
    图13
    将JLINK插上电脑的USB接口,连接好之后给手机主控底板供电,详细的介绍可以参考《如何上电》教程,路径为:..\WT_Mobile\0.从这里开始\0.开机测试。
    打开定时器实验的Keil工程timer0_general.uvproj,位于目录:
    ..\WT_Mobile\1.初级教程\DA14580\3_初级_定时器\projects\target_apps\peripheral_examples\timer0\timer0_general\Keil_5。如下图所示:

   
    图14
    使用手环调试下载线连接好Jlink,编译,点击DEBUG,然后点击全速运行,则可以看到蓝色LED闪烁,如下图所示:

  


  
    图15



如需定制开发,请通过官网“疯壳”网页底部的“联系我们”进行联系

    文件下载请点击:
Timer教程.pdf (750.77 KB, 下载次数: 0)



关注下面的标签,发现更多相似文章
分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条