214 lines
8.0 KiB
C
214 lines
8.0 KiB
C
/*********************************************************************************************************************
|
||
* CH32V307VCT6 Opensourec Library 即(CH32V307VCT6 开源库)是一个基于官方 SDK 接口的第三方开源库
|
||
* Copyright (c) 2022 SEEKFREE 逐飞科技
|
||
*
|
||
* 本文件是CH32V307VCT6 开源库的一部分
|
||
*
|
||
* CH32V307VCT6 开源库 是免费软件
|
||
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
|
||
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
|
||
*
|
||
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
|
||
* 甚至没有隐含的适销性或适合特定用途的保证
|
||
* 更多细节请参见 GPL
|
||
*
|
||
* 您应该在收到本开源库的同时收到一份 GPL 的副本
|
||
* 如果没有,请参阅<https://www.gnu.org/licenses/>
|
||
*
|
||
* 额外注明:
|
||
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
|
||
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
|
||
* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
|
||
* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
|
||
*
|
||
* 文件名称 zf_driver_PWM_MAP
|
||
* 公司名称 成都逐飞科技有限公司
|
||
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
|
||
* 开发环境 MounRiver Studio V1.8.1
|
||
* 适用平台 CH32V307VCT6
|
||
* 店铺链接 https://seekfree.taobao.com/
|
||
*
|
||
* 修改记录
|
||
* 日期 作者 备注
|
||
* 2022-09-15 大W first version
|
||
********************************************************************************************************************/
|
||
|
||
#ifndef _zf_driver_PWM_MAP_h
|
||
#define _zf_driver_PWM_MAP_h
|
||
|
||
#include "ch32v30x_rcc.h"
|
||
#include "ch32v30x_gpio.h"
|
||
#include "ch32v30x_tim.h"
|
||
#include "zf_common_debug.h"
|
||
|
||
typedef enum
|
||
{
|
||
// MAP0 默认映射
|
||
// MAP1 重映射
|
||
// MAP2 部分映射
|
||
// MAP3 完全映射
|
||
|
||
// 同一个PWMP模块不同通道只能输出相同频率的PWM,占空比可设置不同
|
||
// 例如PWM1_PWM_MAP_CH1_PA8与PWM1_PWM_MAP_CH3_PA10属于同一个模块,频率只能一样,但是占空比可以不一样
|
||
|
||
//----------------定时器1----------------
|
||
// 例如:PWM1_PWM_MAP_CH2_PA9与PWM1_PWM_MAP_CH1N_PB13不能一起使用。
|
||
// 只允许TIM1_PWM_MAP0_CH1_A8 和 TIM1_PWM_MAP0_CH2_A9和 TIM1_PWM_MAP0_CH3_A10 和 TIM1_PWM_MAP0_CH4_A11 同组映射引脚一起使用
|
||
|
||
// 以下为TIM1的PWM的一组映射引脚,不允许映射引脚混用。
|
||
// 默认映射
|
||
TIM1_PWM_MAP0_CH1_A8 = 0x00000 | A8 , // 0x 0[TIM1] 0[MAP0] 0[CH1] 08[A8 ]
|
||
TIM1_PWM_MAP0_CH2_A9 = 0x00100 | A9 , // 0x 0[TIM1] 0[MAP0] 1[CH2] 09[A9 ]
|
||
TIM1_PWM_MAP0_CH3_A10 = 0x00200 | A10, // 0x 0[TIM1] 0[MAP0] 2[CH3] 0A[A10]
|
||
TIM1_PWM_MAP0_CH4_A11 = 0x00300 | A11, // 0x 0[TIM1] 0[MAP0] 3[CH4] 0B[A11]
|
||
|
||
// 以下为TIM1的PWM的一组映射引脚,不允许映射引脚混用。
|
||
// 完全映射
|
||
TIM1_PWM_MAP3_CH1_E9 = 0x03000 | E9 , // 0x 0[TIM1] 3[MAP3] 0[CH1] 69[E9 ]
|
||
TIM1_PWM_MAP3_CH2_E11 = 0x03100 | E11, // 0x 0[TIM1] 3[MAP3] 1[CH2] 6B[E11]
|
||
TIM1_PWM_MAP3_CH3_E13 = 0x03200 | E13, // 0x 0[TIM1] 3[MAP3] 2[CH3] 6D[E13]
|
||
TIM1_PWM_MAP3_CH4_E14 = 0x03300 | E14, // 0x 0[TIM1] 3[MAP3] 3[CH4] 6E[E14]
|
||
|
||
//----------------定时器2----------------
|
||
|
||
// 以下为TIM2的PWM的一组映射引脚,不允许映射引脚混用。
|
||
// 默认映射
|
||
TIM2_PWM_MAP0_CH1_A0 = 0x10000 | A0,
|
||
TIM2_PWM_MAP0_CH2_A1 = 0x10100 | A1,
|
||
TIM2_PWM_MAP0_CH3_A2 = 0x10200 | A2,
|
||
TIM2_PWM_MAP0_CH4_A3 = 0x10300 | A3,
|
||
|
||
// 以下为TIM2的PWM的一组映射引脚,不允许映射引脚混用。
|
||
// 重映射
|
||
TIM2_PWM_MAP1_CH1_A15 = 0x11000 | A15,
|
||
TIM2_PWM_MAP1_CH2_B3 = 0x11100 | B3 ,
|
||
TIM2_PWM_MAP1_CH3_A2 = 0x11200 | A2 ,
|
||
TIM2_PWM_MAP1_CH4_A3 = 0x11300 | A3 ,
|
||
|
||
// 以下为TIM2的PWM的一组映射引脚,不允许映射引脚混用。
|
||
// 部分映射
|
||
TIM2_PWM_MAP2_CH1_A0 = 0x12000 | A0 ,
|
||
TIM2_PWM_MAP2_CH2_A1 = 0x12100 | A1 ,
|
||
TIM2_PWM_MAP2_CH3_B10 = 0x12200 | B10, // 下载器默认串口,如果需要使用,则需要屏蔽默认串口初始化
|
||
TIM2_PWM_MAP2_CH4_B11 = 0x12300 | B11, // 下载器默认串口,如果需要使用,则需要屏蔽默认串口初始化
|
||
|
||
// 以下为TIM2的PWM的一组映射引脚,不允许映射引脚混用。
|
||
// 完全映射
|
||
TIM2_PWM_MAP3_CH1_A15 = 0x13000 | A15,
|
||
TIM2_PWM_MAP3_CH2_B3 = 0x13100 | B3 ,
|
||
TIM2_PWM_MAP3_CH3_B10 = 0x13200 | B10, // 下载器默认串口,如果需要使用,则需要屏蔽默认串口初始化
|
||
TIM2_PWM_MAP3_CH4_B11 = 0x13300 | B11, // 下载器默认串口,如果需要使用,则需要屏蔽默认串口初始化
|
||
|
||
//----------------定时器3----------------
|
||
|
||
// 以下为TIM3的PWM的一组映射引脚,不允许映射引脚混用。
|
||
// 默认映射
|
||
TIM3_PWM_MAP0_CH1_A6 = 0x20000 | A6,
|
||
TIM3_PWM_MAP0_CH2_A7 = 0x20100 | A7,
|
||
TIM3_PWM_MAP0_CH3_B0 = 0x20200 | B0,
|
||
TIM3_PWM_MAP0_CH4_B1 = 0x20300 | B1,
|
||
|
||
// 以下为TIM3的PWM的一组映射引脚,不允许映射引脚混用。
|
||
// 部分映射
|
||
TIM3_PWM_MAP2_CH1_B4 = 0x22000 | B4,
|
||
TIM3_PWM_MAP2_CH2_B5 = 0x22100 | B5,
|
||
TIM3_PWM_MAP2_CH3_B0 = 0x22200 | B0,
|
||
TIM3_PWM_MAP2_CH4_B1 = 0x22300 | B1,
|
||
|
||
// 以下为TIM3的PWM的一组映射引脚,不允许映射引脚混用。
|
||
// 完全映射
|
||
TIM3_PWM_MAP3_CH1_C6 = 0x23000 | C6,
|
||
TIM3_PWM_MAP3_CH2_C7 = 0x23100 | C7,
|
||
TIM3_PWM_MAP3_CH3_C8 = 0x23200 | C8,
|
||
TIM3_PWM_MAP3_CH4_C9 = 0x23300 | C9,
|
||
|
||
//----------------定时器4----------------
|
||
|
||
// 以下为TIM4的PWM的一组映射引脚,不允许映射引脚混用。
|
||
// 默认映射
|
||
TIM4_PWM_MAP0_CH1_B6 = 0x30000 | B6,
|
||
TIM4_PWM_MAP0_CH2_B7 = 0x30100 | B7,
|
||
TIM4_PWM_MAP0_CH3_B8 = 0x30200 | B8,
|
||
TIM4_PWM_MAP0_CH4_B9 = 0x30300 | B9,
|
||
|
||
// 以下为TIM4的PWM的一组映射引脚,不允许映射引脚混用。
|
||
//重映射
|
||
TIM4_PWM_MAP1_CH1_D12 = 0x31000 | D12,
|
||
TIM4_PWM_MAP1_CH2_D13 = 0x31100 | D13,
|
||
TIM4_PWM_MAP1_CH3_D14 = 0x31200 | D14,
|
||
TIM4_PWM_MAP1_CH4_D15 = 0x31300 | D15,
|
||
|
||
//----------------定时器5----------------
|
||
|
||
// 以下为TIM5的PWM的一组映射引脚,不允许映射引脚混用。
|
||
// 默认映射
|
||
TIM5_PWM_MAP0_CH1_A0 = 0x40000 | A0,
|
||
TIM5_PWM_MAP0_CH2_A1 = 0x40100 | A1,
|
||
TIM5_PWM_MAP0_CH3_A2 = 0x40200 | A2,
|
||
TIM5_PWM_MAP0_CH4_A3 = 0x40300 | A3,
|
||
|
||
//----------------定时器8----------------
|
||
|
||
// 以下为TIM8的PWM的一组映射引脚,不允许映射引脚混用。
|
||
// 默认映射
|
||
TIM8_PWM_MAP0_CH1_C6 = 0x70000 | C6,
|
||
TIM8_PWM_MAP0_CH2_C7 = 0x70100 | C7,
|
||
TIM8_PWM_MAP0_CH3_C8 = 0x70200 | C8,
|
||
TIM8_PWM_MAP0_CH4_C9 = 0x70300 | C9,
|
||
|
||
// 以下为TIM8的PWM的一组映射引脚,不允许映射引脚混用。
|
||
//重映射
|
||
TIM8_PWM_MAP1_CH1_B6 = 0x71000 | B6 ,
|
||
TIM8_PWM_MAP1_CH2_B7 = 0x71100 | B7 ,
|
||
TIM8_PWM_MAP1_CH3_B8 = 0x71200 | B8 ,
|
||
TIM8_PWM_MAP1_CH4_C13 = 0x71300 | C13,
|
||
|
||
//----------------定时器9----------------
|
||
|
||
// 以下为TIM9的PWM的一组映射引脚,不允许映射引脚混用。
|
||
// 默认映射
|
||
TIM9_PWM_MAP0_CH1_A2 = 0x80000 | A2,
|
||
TIM9_PWM_MAP0_CH2_A3 = 0x80100 | A3,
|
||
TIM9_PWM_MAP0_CH3_A4 = 0x80200 | A4,
|
||
TIM9_PWM_MAP0_CH4_C4 = 0x80300 | C4,
|
||
|
||
// 以下为TIM9的PWM的一组映射引脚,不允许映射引脚混用。
|
||
// 完全映射
|
||
TIM9_PWM_MAP3_CH1_D9 = 0x83000 | D9 ,
|
||
TIM9_PWM_MAP3_CH2_D11 = 0x83100 | D11,
|
||
TIM9_PWM_MAP3_CH3_D13 = 0x83200 | D13,
|
||
TIM9_PWM_MAP3_CH4_D15 = 0x83300 | D15,
|
||
|
||
//----------------定时器10----------------
|
||
|
||
// 以下为TIM10的PWM的一组映射引脚,不允许映射引脚混用。
|
||
// 默认映射
|
||
TIM10_PWM_MAP0_CH1_B8 = 0x90000 | B8 ,
|
||
TIM10_PWM_MAP0_CH2_B9 = 0x90100 | B9 ,
|
||
TIM10_PWM_MAP0_CH3_C3 = 0x90200 | C3 ,
|
||
TIM10_PWM_MAP0_CH4_C11= 0x90300 | C11,
|
||
|
||
// 以下为TIM10的PWM的一组映射引脚,不允许映射引脚混用。
|
||
//部分映射
|
||
TIM10_PWM_MAP1_CH1_B3 = 0x91000 | B3 ,
|
||
TIM10_PWM_MAP1_CH2_B4 = 0x91100 | B4 ,
|
||
TIM10_PWM_MAP1_CH3_B5 = 0x91200 | B5 ,
|
||
TIM10_PWM_MAP1_CH4_C15= 0x91300 | C15,
|
||
|
||
// 以下为TIM10的PWM的一组映射引脚,不允许映射引脚混用。
|
||
//完全映射
|
||
TIM10_PWM_MAP3_CH1_D1 = 0x93000 | D1,
|
||
TIM10_PWM_MAP3_CH2_D3 = 0x93100 | D3,
|
||
TIM10_PWM_MAP3_CH3_D5 = 0x93200 | D5,
|
||
TIM10_PWM_MAP3_CH4_D7 = 0x93300 | D7,
|
||
|
||
}pwm_channel_enum;
|
||
|
||
#define PWM_DUTY_MAX 10000
|
||
|
||
void pwm_set_duty (pwm_channel_enum pin, uint32 duty);
|
||
void pwm_set_freq (pwm_channel_enum pin, uint32 freq, uint32 duty);
|
||
void pwm_init (pwm_channel_enum pin, uint32 freq, uint32 duty);
|
||
|
||
#endif
|