查看: 947|回复: 0

【CC3200AI 实验教程5】疯壳·AI语音人脸识别-定时器

[复制链接]
  • TA的每日心情
    开心
    2022-4-17 15:37
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2022-8-11 14:49:47 | 显示全部楼层 |阅读模式
    分享到:
    CC3200AI 实验教程
    ——疯壳·开发板系列
    定时器




        1.1寄存器
        CC3200包含4个32位用户可编程通用定时器(TimerA0~3),通用定时器可以对定时器输入引脚的外部事件进行计数或定时。每个定时器模块包含2 个16位的定时/计数器(TimerA和TimerB),可以作为定时器或事件计数器独立工作,也可以作为一个32位定时器工作。
        CC3200的定时器具有多种操作模式:16位或32位可编程单次定时器;16位或32位可编程周期定时器;16位通用定时器,带8位预分频器;16位输入边沿计数或时间捕捉模式,带8位预分频器;16位脉冲宽度调制模式(PWM),带8位预分频器和软件可编程输入。具有以下特性:
        a、向上或向下计数;
        b、16个16位或32位捕捉比较PWM(CCP)引脚;
        c、可以确定产生定时器中断到进入中断服务程序(ISR)的时间;
        d、可以触发使用 DMA 的高效传输;
        e、系统时钟运行(80MHz)。
        GPTMCFG寄存器主要是配置通用定时器模块的全局操作。确定通用定时器工作于32位模式还是16位模式。该寄存器中的值只能是在GPTMCTL寄存器中的TAEN和TBEN两位被清零时改变。如图1.0.1所示。

    1.png    
        图1.0.1 GPTMCFG寄存器
        2~0位:写入0,配置为32位定时器模式;写入4,配置为16位定时器模式。
        GPTMTAMR寄存器配置是基于GPTMCFG寄存器的配置来进行选择的。在PWM模式中,置位TAAMS位、清除TACMR位和配置TAMR为0x01或者0x02。寄存器如图1.0.2所示,位定义如图1.0.3所示。

    2.png    
        图1.0.2 GPTMTAMR寄存器

    3.0.png
    3.1.png    
        图1.0.3 GPTMTAMR寄存器位定义
        GPTMTBMR寄存器控制独立定时器B的工作模式。当定时器A和定时器B一起使用时该寄存器被忽略,而是通过GPTMTAMR来控制定时器A和定时器B的工作模式。注意:除了TCACT位,其它位都必须在GPTMCTL寄存器中的TBEN位清零时进行配置。GPTMTBMR寄存器如图1.0.4所示,位定义如图1.0.5所示。

    4.png    
        图1.0.4 GPTMTBMR寄存器

    5.0.png
    5.1.png    
        图1.0.5 GPTMTBMR寄存器位定义
        GPTMCTL寄存器该寄存器为定时器的控制寄存器,如图1.0.6所示:

    6.png    
        图1.0.6 GPTMCTL寄存器

    7.0.png
    7.1.png    
        图1.0.7 GPTMCTL寄存器位定义

        GPTMIMR寄存器可以软件使能/关闭定时器的控制电平中断。置位可以打开对应的中断,清零可以关闭对应的中断。寄存器如图1.0.8所示,该寄存器位定义如图1.0.9所示

    8.png    
        图1.0.8 GPTMIMR寄存器

    9.0.png
    9.1.png    
        图1.0.9 GPTMIMR寄存器位定义

        GPTMRIS寄存器为中断源状态寄存器,通过该寄存器可以获取中断源。GPTMRIS寄存器如下图1.1.0所示,寄存器位定义如图1.1.1所示。

    10.png    
        图1.1.0 GPTMRIS寄存器

    11.0.png
    11.1.png    
        图1.1.1 GPTMRIS寄存器位定义
        GPTMMIS寄存器为中断掩码状态寄存器,可以检测是否产生中断。如图1.1.3所示为其寄存器,图1.1.4为寄存器的位定义。

    13.png
        图1.1.3 GPTMMIS寄存器

    14.0.png
    14.1.png
        图1.1.4 GPTMMIS寄存器位定义
        GPTMICR寄存器用于清除GPTMRIS和GPTMIS寄存器中的状态位,写入1则清除对应的中断。GPTMICR寄存器如图1.1.5所示,GPTMICR寄存器位定义如图1.1.6所示。

    15.png    
        图1.1.5GPTMICR寄存器

    16.0.png
    16.1.png    
        图1.1.6 GPTMICR寄存器位定义
        当通用定时器被配置为32位模式,GPTMTAILR作为一个32位寄存器(高16位对应与定时器B装载值寄存器的内容)。在16位模式,寄存器的高16位读取值为0,并且对GPTMTBILR寄存器的状态没有影响。如图1.1.7所示为其寄存器及位定义。

    17.png    
        图1.1.7 GPTMTAILR寄存器及位定义
        当通用定时器配置为32位模式时,GPTMTBILR寄存器中[15:0]位的内容被装载到GPTMTAILR 寄存器的高16位。读取该寄存器,则返回定时器B的当前值,写操作无效。在 16 位模式,[15:0]位用于装载值。[31:16]位保留不使用。如图1.1.8所示为GPTMTBILR寄存器及其位定义。

    18.png    
        图1.1.8 GPTMTBILR寄存器及其位定义
        当通用定时器被配置为32位模式时,GPTMTAMATCHR作为32位寄存器(高16位对应GPTMTBMATCHR寄存器的内容)。在16位模式,寄存器的高16位读取为0,并且对GPTMTBMATCHR的状态没有影响。如图1.1.9所示为GPTMTAMATCHR及其位定义。

    19.png    
        图1.1.9 GPTMTAMATCHR及其位定义
        当通用定时器配置为32位模式时,GPTMTBMATCHR寄存器的[15:0]位被装载到寄存器GPTMTAMATCHR寄存器的高16位。读取该寄存器得到定时器B的当前值,写操作无效。在16位模式中,[15:0]位用于匹配值。[31:16]位保留不使用。如图1.2.0所示GPTMTBMATCHR寄存器及其位定义。

    20.png    
        图1.2.0 GPTMTBMATCHR寄存器及其位定义

        GPTMTAPR寄存器通过软件来扩展独立定时器的范围。在单次或者周期减计数模式, 该寄存器作为定时计数器的预分频器。如1.2.1所示。

    21.png    
        图1.2.1 GPTMTAPR寄存器
        GPTMTBPR寄存器通过软件来扩展独立定时器的范围。在单次或者周期减计数模式, 该寄存器作为定时计数器的预分频器。如图1.2.2所示。

    22.png    
        图1.2.2 GPTMTBPR寄存器
        GPTMTAPMR寄存器扩展独立定时器GPTMTAMATCHR的范围。当寄存器工作于 16 位模式时,该寄存器表示[23:16]位。如图1.2.3所示。

    23.png    
        图1.2.3 GPTMTAPMR寄存器
        GPTMTBPMR寄存器扩展独立定时器GPTMTAMATCHR的范围。当寄存器工作于16位模式时,该寄存器表示[23:16]位。如图1.2.4所示。

    24.png    
        图1.2.4 GPTMTBPMR寄存器
        当定时器配置为32位模式时,GPTMTAR作为32位寄存器使用(高16位对应GPTMTBR寄存器的内容)。在16位输入边沿计数,输入边沿定时和PEM模式,[15:0]位包含计数器的值,[23:16]位包含预分频高8位的值。[31:24]位读取值始终为0。可以读取 GPTMTAV的[23:16]位来获取16位模式单次和周期模式的预分频值。读取GPTMTAPS寄存器可以获取定期快照模式下的预分频值。如图1.2.5所示为GPTMTAR寄存器及其位定义。

    25.png    
        图1.2.5 GPTMTAR寄存器及其位定义。
        当通用定时器配置为32位模式时,GPTMTBR寄存器的[15:0]位被装载到GPTMTAR寄存器的高16位。读取该寄存器发挥定时器B的当前值。在16位模式,[15:0] 位包含计数器的值,[23:16]位包含在输入边沿计数、边沿定时和PWM模式下的预分频。[31:24]位读取为0。可以通过读取GPTMTBV寄存器中的[23:16]位可以获取16位单次和周期模式的预分频值。读取GPTMTBPS寄存器可以获取周期快照模式下的预分频。如图1.2.6所示为GPTMTBR寄存器及其位定义。

    26.png    
        图1.2.6 GPTMTBR寄存器及其位定义
        当定时器配置为32位模式时,GPTMTAV作为32位寄存器(高16位对应GPTMTBV寄存器的内容)。在 6位模式,[15:0]位包含计数器的值,[23:16]位包含分频值。在单次或周期减计数模式,[23:16]位存储真实的预分频值,意味着[15:0]位的值之前,先减[23:16]位的值。[31:24]位读取始终为0。如图1.2.7所示为GPTMTAV寄存器及其位定义。

    27.png    
        图1.2.7 GPTMTAV寄存器及其位定义
        当通用定时器配置为32位模式,GPTMTBV寄存器[15:0]位的值被装载到GPTMTAV寄存器的高16位。读取该寄存器,则返回定时器B的当前值。在16位模式,[15:0]位包含计数器的值,[23:16]位包含当前的预分频值。在单次或周期模式,[23:16]位为真实的预分频值,意味着在[15:0]位减数之前,[23:16]位先进行减数。[31:24]位读取值为0。如图1.2.8所示为GPTMTBV寄存器及其位定义。

    28.png    
        图1.2.8 GPTMTBV寄存器及其位定义
        GPTMDMAEV寄存器允许软件使能和关闭定时器DMA触发事件。置位则对应的DMA触发使能,清零则关闭。如图1.2.9所示GPTMDMAEV寄存器,图1.3.0为其位定义。

    29.png    
        图1.2.9 GPTMDMAEV寄存器

    30.0.png
    30.1.png    
        图1.3.0 GPTMDMAEV寄存器位定义

        1.2 实验现象
        本实验在官方CC3200SDK_1.2.0中 timer例程代码的基础上修改过来的,用IAR打开Timer_Demo里的工程,编译下载(参考GPIO小节),从程序可以看到是利用CC3200的定时器Timer A0和Timer A1去控制GPIO_9和GPIO_11亮灭时间。如图1.3.1所示为该工程的main函数。

    31.png    
        图1.3.1 Timer_Demo的main函数
        在main函数中通过PinMuxConfig()函数初始化了GPIO_9和GPIO_11,通过Timer_IF_Init()初始化了TimerA0和TimerA1,频率和系统时钟一致(不分频),在Timer_IF_Start()函数中对TimerA0装载了500这一参数,TimerA1装载了1000,实际上就是TimerA0定时500ms进入中断函数TimerBaseIntHandler()、TimerA1定时1000ms进入中断函数TimerRefIntHandler(),进入中断后对IO口输出状态进行反转。
        打开UniFlash下载bin文件到板子上(参考GPIO小节),把D5、D7拨码开关拨到ON(程序中使用的是D5、D7),按下复位键,可以看到D5和D7交替闪烁,如图1.3.2为实验现象。

    32.png    
        图1.3.2 Timer_Demo实验现象
        使用逻辑分析仪可以看到GPIO_9端为1000ms(1s)的脉宽,如图1.3.3所示。

    33.png    
        图1.3.3 GPIO_9脉宽
        如图1.3.4可以看到GPIO_11端的脉宽为500ms(0.5s)。

    34.png    
        图1.3.4 GPIO_11脉宽



        文件下载请点击: 【3】定时器.pdf (3.52 MB, 下载次数: 0)
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-4-27 14:47 , Processed in 0.136062 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.