This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

tms570LC4357 这个芯片有定时器模块吗?

Other Parts Discussed in Thread: HALCOGEN

想实现1ms的定时中断。

  • 有的,2 个新一代高端定时器 (N2HET) 模块,详情参考芯片手册23 High-End Timer (N2HET) Module
    www.ti.com.cn/.../spnu563a.pdf
  • 另外还是有RTI的

    RTI模块是专门的实时时钟模块。HET是高端定时器模块。比较简单的功能的话,建议用RTI。
  • 我想用RTI 模块定时1ms,用的是定时器1的比较0模块,在HALCoGent配置时,也使能了到RTI Compare0 的中断,中断到IRQ,自动生成了void rtiCompare0Interrupt(void) 代码,但是调试时进不了这个函数,不知为何?
  • 通常RTI时钟为75MHz(由HAlCoGen生成的代码)。如果计数器频率为9.375MHz(UC compare = 7),则可以通过设置compare 0 为9375并更新compare 0寄存器来获得1 ms的中断。

    另外您可以参考一下下面的程序

    /** @example example_rtiBlinky.c
    *   This is an example which descibes the steps to create an example application which 
    *   toggles the High End Timer (HET) pin 1 based on an RTI timer compare 0 tick of one second.
    *
    *   @b Step @b 1:
    *
    *   Create a new project.
    *
    *   Navigate: -> File -> New -> Project
    *
    *   @image html example_createProject.jpg "Figure: Create a new Project"
    *
    *   @b Step @b 2:
    *
    *   Configure driver code generation: 
    *   - Enable RTI driver
    *   - Enable GIO driver
    *   - Disable others
    *
    *   Navigate: -> TMS570LCxx /RM57xx -> Enable Drivers
    *
    *   @image html example_rtiBlinky_enableDrivers.jpg "Figure: Driver Configuration"
    *
    *   @b Step @b 3:
    *
    *   Configure Vectored Interrupt Module Channels: 
    *   - Map VIM Channel 2 to RTI Compare 0 interrupt
    *   - Enable VIM Channel 2
    *   - Map VIM Channel 2 to IRQ
    *
    *   Navigate: -> TMS570LCxx /RM5x -> VIM Channel 0-31
    *
    *   @image html example_rtiBlinky_vimChannelView.jpg "Figure: VIM Channel Configuration"
    *
    *   @b Step @b 4:
    *
    *   Configure RTI compare 0 period to 1000 ms: 
    *   - Enter 1000.000 to Compare 0 Period edit box
    *
    *   Navigate: -> RTI -> RTI1 Compare
    *
    *   @image html example_rtiBlinky_rti1CompareView.jpg "Figure: RTI Compare Configuration"
    *
    *   @b Step @b 5:
    *
    *   Generate code
    *
    *   Navigate: -> File -> Generate Code
    *
    *   @image html generateCode.jpg "Figure: Generate Code"
    *
    *   @b Step @b 6:
    *
    *   Copy source code below into your application.
    *
    *   The example file example_rtiBlinky.c can also be found in the examples folder: ../HALCoGen/examples
    *
    *   @note HALCoGen generates an enpty main function in sys_main.c, 
    *         please make sure that you link in the right main function or copy the source into the user code sections of this file.
    *
    */
    
    /** @file sys_main.c 
    *   @brief Application main file
    *   @date 25.July.2013
    *   @version 03.06.00
    *
    *   This file contains an empty main function,
    *   which can be used for the application.
    */
    
    /* (c) Texas Instruments 2009-2013, All rights reserved. */
    
    /* 
    * Copyright (C) 2009-2015 Texas Instruments Incorporated - www.ti.com
    * 
    * 
    *  Redistribution and use in source and binary forms, with or without 
    *  modification, are permitted provided that the following conditions 
    *  are met:
    *
    *    Redistributions of source code must retain the above copyright 
    *    notice, this list of conditions and the following disclaimer.
    *
    *    Redistributions in binary form must reproduce the above copyright
    *    notice, this list of conditions and the following disclaimer in the 
    *    documentation and/or other materials provided with the   
    *    distribution.
    *
    *    Neither the name of Texas Instruments Incorporated nor the names of
    *    its contributors may be used to endorse or promote products derived
    *    from this software without specific prior written permission.
    *
    *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
    *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
    *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
    *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
    *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT 
    *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION HOWEVER CAUSED AND ON ANY
    *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
    *  INCLUDING NEGLIGENCE OR OTHERWISE ARISING IN ANY WAY OUT OF THE USE 
    *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    *
    */
    
    /* USER CODE BEGIN (0) */
    /* USER CODE END */
    
    /* Include Files */
    
    #include "HL_sys_common.h"
    #include "HL_system.h"
    
    /* USER CODE BEGIN (1) */
    #include "HL_sys_core.h"
    #include "HL_mibspi.h"
    #include "HL_esm.h"
    #include "HL_rti.h"
    #include "HL_gio.h"
    #include "HL_het.h"
    
    /* USER CODE END */
    
    /** @fn void main(void)
    *   @brief Application main function
    *   @note This function is empty by default.
    *
    *   This function is called after startup.
    *   The user can use this function to implement the application.
    */
    
    /* USER CODE BEGIN (2) */
    /* USER CODE END */
    
    void main(void)
    {
    /* USER CODE BEGIN (3) */
    
    	/* Initialize RTI driver */
    	rtiInit();
    
        /* Set high end timer GIO port hetPort pin direction to all output */
    	gioSetDirection(hetPORT1, 0xFFFFFFFF);
    
        /* Enable RTI Compare 0 interrupt notification */
    	rtiEnableNotification(rtiREG1,rtiNOTIFICATION_COMPARE0);
    
        /* Enable IRQ - Clear I flag in CPS register */
        /* Note: This is usually done by the OS or in an svc dispatcher */
    	_enable_IRQ_interrupt_();
    
        /* Start RTI Counter Block 0 */
    	rtiStartCounter(rtiREG1,rtiCOUNTER_BLOCK0);
    
        /* Run forever */
    	while(1);
    
    /* USER CODE END */
    }
    
    /* USER CODE BEGIN (4) */
    
    
    /* Note-You need to remove rtiNotification from notification.c to avoid redefinition */
    void rtiNotification(rtiBASE_t *rtiREG, uint32 notification)
    {
    /*  enter user code between the USER CODE BEGIN and USER CODE END. */
        /* Toggle HET pin 0 */
    	gioSetPort(hetPORT1, gioGetPort(hetPORT1) ^ 0x00000001);
    }
    /* USER CODE END */