timer.c 4.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /* Copyright Statement:
  2. *
  3. * This software/firmware and related documentation ("AutoChips Software") are
  4. * protected under relevant copyright laws. The information contained herein is
  5. * confidential and proprietary to AutoChips Inc. and/or its licensors. Without
  6. * the prior written permission of AutoChips inc. and/or its licensors, any
  7. * reproduction, modification, use or disclosure of AutoChips Software, and
  8. * information contained herein, in whole or in part, shall be strictly
  9. * prohibited.
  10. *
  11. * AutoChips Inc. (C) 2022. All rights reserved.
  12. *
  13. * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  14. * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("AUTOCHIPS SOFTWARE")
  15. * RECEIVED FROM AUTOCHIPS AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
  16. * ON AN "AS-IS" BASIS ONLY. AUTOCHIPS EXPRESSLY DISCLAIMS ANY AND ALL
  17. * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
  18. * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
  19. * NONINFRINGEMENT. NEITHER DOES AUTOCHIPS PROVIDE ANY WARRANTY WHATSOEVER WITH
  20. * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY,
  21. * INCORPORATED IN, OR SUPPLIED WITH THE AUTOCHIPS SOFTWARE, AND RECEIVER AGREES
  22. * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
  23. * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
  24. * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN AUTOCHIPS
  25. * SOFTWARE. AUTOCHIPS SHALL ALSO NOT BE RESPONSIBLE FOR ANY AUTOCHIPS SOFTWARE
  26. * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
  27. * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND AUTOCHIPS'S
  28. * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE AUTOCHIPS SOFTWARE
  29. * RELEASED HEREUNDER WILL BE, AT AUTOCHIPS'S OPTION, TO REVISE OR REPLACE THE
  30. * AUTOCHIPS SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE
  31. * CHARGE PAID BY RECEIVER TO AUTOCHIPS FOR SUCH AUTOCHIPS SOFTWARE AT ISSUE.
  32. */
  33. /******************************************************************************
  34. * @version: V2.0.1 AC7840x Demo
  35. ******************************************************************************/
  36. /*!
  37. * @file timer.c
  38. *
  39. * @brief This file contains the user function.
  40. *
  41. */
  42. /* =========================================== Includes =========================================== */
  43. #include "timer.h"
  44. #include "string.h"
  45. #include "timer_drv.h"
  46. #include "timer_hw.h"
  47. #include "process.h"
  48. /*!* @brief TIMER0中断回调函数
  49. *
  50. * @param[in] none
  51. * @return none
  52. */
  53. void TIMER0_Callback(void *device, uint32_t wpara, uint32_t lpara)
  54. {
  55. timer_callback();
  56. }
  57. /*!
  58. * @brief TIMER初始化函数
  59. *
  60. * @param[in] none
  61. * @return none
  62. *注意:timer时钟源在clock_config.c文件的peripheralClockConfig0结构体中第二个元素配置
  63. */
  64. void Timer_Init(void)
  65. {
  66. timer_user_channel_config_t timerConfig;
  67. memset(&timerConfig, 0U, sizeof(timerConfig));
  68. /*TIMER参数配置*/
  69. timerConfig.timerMode = TIMER_PERIODIC_COUNTER; /* 32bit计数 */
  70. timerConfig.periodUnits = TIMER_PERIOD_UNITS_MICROSECONDS; /* 以us为单位计数 */
  71. timerConfig.period = 10000U; /* 10ms为周期 */
  72. timerConfig.triggerSource = TIMER_TRIGGER_SOURCE_INTERNAL; /* 选择内部触发 */
  73. timerConfig.triggerSelect = 0x00U; /* 选择通道0作为触发源,触发是否奏效由TSOT决定,1:触发源上升沿来时开始计数;0:使能后就开始计数,触发源无效 */
  74. timerConfig.enableReloadOnTrigger = false; /* 触发源来时不重新加载计数值 */
  75. timerConfig.enableStopOnInterrupt = false; /* 发生一次中断后不停止Timer的计数 */
  76. timerConfig.enableStartOnTrigger = false; /* 配置ENRx=1即会使Timer开始计数,该位决定触发源是否奏效 */
  77. timerConfig.chainChannel = false; /* 禁能链接 */
  78. timerConfig.isInterruptEnabled = true; /* 使能中断 */
  79. timerConfig.callback = TIMER0_Callback; /* 回调函数配置 */
  80. /*TIMER调用底层接口*/
  81. TIMER_DRV_Init(0, true);
  82. TIMER_DRV_InitChannel(0, TIMER_CHANNEL_0, &timerConfig);
  83. NVIC_SetPriority(TIMER_CHANNEL0_IRQn, 3); /*! 设置SPI中断优先级 */
  84. TIMER_DRV_StartChannels(0, 1 << TIMER_CHANNEL_0);
  85. }