/*****************************************************************************
* Copyright (c) 2019, Nations Technologies Inc.
*
* All rights reserved.
* ****************************************************************************
*
* 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 disclaimer below.
*
* Nations' name may not be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY NATIONS "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
* DISCLAIMED. IN NO EVENT SHALL NATIONS 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.
* ****************************************************************************/
/**
*\*\file n32g430_tim.c
*\*\author Nations
*\*\version v1.0.0
*\*\copyright Copyright (c) 2019, Nations Technologies Inc. All rights reserved.
**/
#include "n32g430_tim.h"
#include "n32g430_rcc.h"
/**
*\*\name TIM_Reset.
*\*\fun Reset the TIM registers.
*\*\param TIMx :
*\*\ - TIM1
*\*\ - TIM2
*\*\ - TIM3
*\*\ - TIM4
*\*\ - TIM5
*\*\ - TIM6
*\*\ - TIM8
*\*\return none
**/
void TIM_Reset(TIM_Module* TIMx)
{
if (TIMx == TIM1)
{
RCC_APB2_Peripheral_Reset(RCC_APB2_PERIPH_TIM1);
}
else if (TIMx == TIM2)
{
RCC_APB1_Peripheral_Reset(RCC_APB1_PERIPH_TIM2);
}
else if (TIMx == TIM3)
{
RCC_APB1_Peripheral_Reset(RCC_APB1_PERIPH_TIM3);
}
else if (TIMx == TIM4)
{
RCC_APB1_Peripheral_Reset(RCC_APB1_PERIPH_TIM4);
}
else if (TIMx == TIM5)
{
RCC_APB1_Peripheral_Reset(RCC_APB1_PERIPH_TIM5);
}
else if (TIMx == TIM6)
{
RCC_APB1_Peripheral_Reset(RCC_APB1_PERIPH_TIM6);
}
else if (TIMx == TIM8)
{
RCC_APB2_Peripheral_Reset(RCC_APB2_PERIPH_TIM8);
}
}
/**
*\*\name TIM_Base_Count_Mode_Set.
*\*\fun Initializes the TIM cnt mode in up mode or down mode.
*\*\param TIMx:
*\*\ - TIM1
*\*\ - TIM2
*\*\ - TIM3
*\*\ - TIM4
*\*\ - TIM5
*\*\ - TIM8
*\*\param cnt_mode
*\*\ - TIM_CNT_MODE_UP
*\*\ - TIM_CNT_MODE_DOWN
*\*\ - TIM_CNT_MODE_CENTER_ALIGN1 TIM Center Aligned Mode1
*\*\ - TIM_CNT_MODE_CENTER_ALIGN2 TIM Center Aligned Mode2
*\*\ - TIM_CNT_MODE_CENTER_ALIGN3 TIM Center Aligned Mode3
*\*\return none
*\*\note The counting direction of TIM6 is fixed upward counting
**/
void TIM_Base_Count_Mode_Set(TIM_Module* TIMx, uint32_t cnt_mode)
{
uint32_t temp_value = 0;
temp_value = TIMx->CTRL1;
/* Reset the CMS and DIR Bits */
temp_value &= (uint32_t)(~((uint32_t)(TIM_CTRL1_DIR | TIM_CTRL1_CAMSEL)));
/* Set the Counter Mode */
temp_value |= cnt_mode;
/* Write to TIMx CTRL1 register */
TIMx->CTRL1 = temp_value;
}
/**
*\*\name TIM_Base_Center_Aligned_Mode_OC4_7_8_9_Trigger_Set.
*\*\param TIMx:
*\*\ - TIM1
*\*\param trigger_mode_in_center_aligned_mode
*\*\ - TIM_UP_COUNTING_OC4_7_8_9_TRIGGER_VALID
*\*\ - TIM_DOWN_COUNTING_OC4_7_8_9_TRIGGER_VALID
*\*\ - TIM_UP_DOWN_COUNTING_OC4_7_8_9_TRIGGER_VALID
*\*\return none
**/
void TIM_Base_Center_Aligned_Mode_OC4_7_8_9_Trigger_Set(TIM_Module* TIMx, uint32_t trigger_mode_in_center_aligned_mode)
{
uint32_t temp_value = 0;
temp_value = TIMx->CTRL1;
/* Reset the CMS and DIR Bits */
temp_value &= (uint32_t)(~((uint32_t)TIM_CENTER_ALIGNED_OC4_7_8_9_MASK));
/* Set the Counter Mode */
temp_value |= trigger_mode_in_center_aligned_mode;
/* Write to TIMx CTRL1 register */
TIMx->CTRL1 = temp_value;
}
/**
*\*\name TIM_Asymmetric_Enable.
*\*\param TIMx:
*\*\ - TIM1
*\*\return none
**/
void TIM_Asymmetric_Enable(TIM_Module* TIMx)
{
TIMx->CTRL1 |= TIM_ASMMETRIC_ENABLE;
}
/**
*\*\name TIM_Asymmetric_Disable.
*\*\param TIMx:
*\*\ - TIM1
*\*\return none
**/
void TIM_Asymmetric_Disable(TIM_Module* TIMx)
{
TIMx->CTRL1 &= (uint32_t)(~((uint32_t)TIM_ASMMETRIC_ENABLE));
}
/**
*\*\name TIM_Base_Auto_Reload_Set.
*\*\fun Initializes the TIM AR value
*\*\param TIMx:
*\*\ - TIM1
*\*\ - TIM2
*\*\ - TIM3
*\*\ - TIM4
*\*\ - TIM5
*\*\ - TIM6
*\*\ - TIM8
*\*\param auto_reload:
- [1, 0xffff]
*\*\return none
**/
void TIM_Base_Auto_Reload_Set(TIM_Module* TIMx, uint16_t auto_reload)
{
TIMx->AR = auto_reload;
}
/**
*\*\name TIM_Base_Prescaler_Set.
*\*\fun Initializes the TIM PSC value
*\*\param TIMx:
*\*\ - TIM1
*\*\ - TIM2
*\*\ - TIM3
*\*\ - TIM4
*\*\ - TIM5
*\*\ - TIM6
*\*\ - TIM8
*\*\param prescaler
*\*\return none
**/
void TIM_Base_Prescaler_Set(TIM_Module* TIMx, uint16_t prescaler)
{
TIMx->PSC = prescaler;
}
/**
*\*\name TIM_Base_Reload_Mode_Set.
*\*\fun Initializes the TIM reload mode
*\*\param TIMx:
*\*\ - TIM1
*\*\ - TIM2
*\*\ - TIM3
*\*\ - TIM4
*\*\ - TIM5
*\*\ - TIM6
*\*\ - TIM8
*\*\param prescaler_reload_mode:
**\ - TIM_PSC_RELOAD_MODE_IMMEDIATE
**\ - TIM_PSC_RELOAD_MODE_UPDATE
*\*\return none
**/
void TIM_Base_Reload_Mode_Set(TIM_Module* TIMx, uint16_t prescaler_reload_mode)
{
TIMx->EVTGEN = prescaler_reload_mode;
}
/**
*\*\name TIM_Base_Repeat_Count_Set.
*\*\fun Initializes the TIM repeat cnt
*\*\param TIMx:
*\*\ - TIM1
*\*\ - TIM8
*\*\param repeat_cnt
*\*\ - [0,255]
*\*\return none
**/
void TIM_Base_Repeat_Count_Set(TIM_Module* TIMx, uint8_t repeat_cnt)
{
TIMx->REPCNT = repeat_cnt;
}
/**
*\*\name TIM_Base_Channel1.
*\*\param TIMx:
*\*\ - TIM1
*\*\ - TIM2
*\*\ - TIM3
*\*\ - TIM4
*\*\ - TIM5
*\*\ - TIM8
*\*\param channel_selection:
**\ - 1
**\ CH1 is from COMP
**\ - 0
**\ CH1 is from IO
*\*\return none
*\*\note not for TIM6
**/
void TIM_Base_Channel1(TIM_Module* TIMx, bool channel_selection)
{
if(channel_selection)
{
TIMx->CTRL1 |= TIM_CH1_SEL;
}
else
{
TIMx->CTRL1 &= (uint32_t)(~TIM_CH1_SEL);
}
}
/**
*\*\name TIM_Base_Channel2.
*\*\param TIMx:
*\*\ - TIM2
*\*\param channel_selection:
**\ - 1
**\ CH2 is from LSE
**\ - 0
**\ CH2 is from IO
*\*\return none
**/
void TIM_Base_Channel2(TIM_Module* TIMx, bool channel_selection)
{
if(channel_selection)
{
TIMx->CTRL1 |= TIM_CH2_SEL;
}
else
{
TIMx->CTRL1 &= (uint32_t)(~TIM_CH2_SEL);
}
}
/**
*\*\name TIM_Base_Channel3.
*\*\param TIMx:
*\*\ - TIM2
*\*\param channel_selection:
**\ - 1
**\ CH3 is
没有合适的资源?快使用搜索试试~ 我知道了~
N32G430实现通用定时器PWM输出【支持N32G4系列单片机_标准库驱动】.zip
共75个文件
h:41个
c:29个
s:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 5 浏览量
2023-07-17
14:21:46
上传
评论
收藏 388KB ZIP 举报
温馨提示
N32G430驱动程序,支持N32G4系列单片机,标准库驱动。 项目代码可直接编译运行~
资源推荐
资源详情
资源评论
收起资源包目录
N32G430实现通用定时器PWM输出【支持N32G4系列单片机_标准库驱动】.zip (75个子文件)
N32G430实现通用定时器PWM输出【支持N32G4系列单片机_标准库驱动】
Drivers
BSP
LED
led.h 1KB
led.c 1KB
TIM
gtim.h 1KB
gtim.c 4KB
CMSIS
device
n32g430_conf.h 3KB
system_n32g430.h 2KB
system_n32g430.c 16KB
startup
startup_n32g430_EWARM.s 14KB
startup_n32g430.s 13KB
n32g430.h 408KB
core
arm_common_tables.h 6KB
arm_math.h 241KB
cmsis_armcc.h 27KB
cmsis_version.h 2KB
core_cm4.h 119KB
cmsis_iccarm.h 27KB
mpu_armv7.h 11KB
cmsis_gcc.h 59KB
arm_const_structs.h 3KB
cmsis_compiler.h 9KB
cmsis_armclang.h 53KB
n32g430_std_periph_driver
inc
misc.h 6KB
n32g430_can.h 26KB
n32g430_gpio.h 31KB
n32g430_dbg.h 3KB
n32g430_crc.h 3KB
n32g430_flash.h 14KB
n32g430_rcc.h 20KB
n32g430_iwdg.h 3KB
n32g430_pwr.h 10KB
n32g430_spi.h 13KB
n32g430_usart.h 14KB
n32g430_comp.h 16KB
n32g430_i2c.h 28KB
n32g430_dma.h 19KB
n32g430_wwdg.h 3KB
n32g430_rtc.h 23KB
n32g430_lptim.h 16KB
n32g430_beeper.h 3KB
n32g430_adc.h 27KB
n32g430_exti.h 7KB
n32g430_tim.h 46KB
src
n32g430_crc.c 7KB
misc.c 9KB
n32g430_flash.c 42KB
n32g430_iwdg.c 4KB
n32g430_adc.c 43KB
n32g430_usart.c 32KB
n32g430_wwdg.c 5KB
n32g430_dma.c 25KB
n32g430_dbg.c 6KB
n32g430_i2c.c 45KB
n32g430_can.c 62KB
n32g430_exti.c 16KB
n32g430_tim.c 133KB
n32g430_spi.c 29KB
n32g430_comp.c 34KB
n32g430_gpio.c 58KB
n32g430_rcc.c 45KB
n32g430_beeper.c 5KB
n32g430_rtc.c 73KB
n32g430_pwr.c 12KB
n32g430_lptim.c 26KB
SYSTEM
delay
delay.h 1KB
delay.c 8KB
usart
usart.h 2KB
usart.c 6KB
sys
sys.h 2KB
sys.c 3KB
User
n32g430_it.c 3KB
main.c 2KB
n32g430_it.h 2KB
Output
atk_g430.hex 14KB
Projects
MDK-ARM
atk_g430.uvprojx 21KB
atk_g430.uvoptx 20KB
Middlewares
共 75 条
- 1
资源评论
不脱发的程序猿
- 粉丝: 24w+
- 资源: 5763
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功