/*****************************************************************************
* 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实现PVD电压监控【支持N32G4系列单片机_标准库驱动】.zip
共91个文件
h:49个
c:37个
s:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 163 浏览量
2023-07-17
14:21:36
上传
评论
收藏 451KB ZIP 举报
温馨提示
N32G430驱动程序,支持N32G4系列单片机,标准库驱动。 项目代码可直接编译运行~
资源推荐
资源详情
资源评论
收起资源包目录
N32G430实现PVD电压监控【支持N32G4系列单片机_标准库驱动】.zip (91个子文件)
N32G430实现PVD电压监控【支持N32G4系列单片机_标准库驱动】
Drivers
BSP
LED
led.h 1KB
led.c 1KB
LCD
lcd.h 5KB
lcd.c 20KB
font.h 71KB
KEY
key.c 3KB
key.h 2KB
SPI
spi.h 2KB
spi.c 6KB
PWR
pwr.h 908B
pwr.c 3KB
DMA
dma.c 3KB
dma.h 1KB
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 3KB
n32g430_it.h 2KB
Output
atk_g430.hex 90KB
Projects
MDK-ARM
atk_g430.uvprojx 22KB
atk_g430.uvoptx 22KB
Middlewares
USMART
usmart_str.h 3KB
usmart.c 16KB
usmart_config.c 2KB
usmart_port.h 5KB
usmart_port.c 6KB
usmart_str.c 16KB
usmart.h 4KB
共 91 条
- 1
资源评论
不脱发的程序猿
- 粉丝: 24w+
- 资源: 5763
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功