📄 main.c
字号:
#define IN_MAIN
#include "config.h"
#include "Time.h"
#pragma import(__use_no_semihosting_swi) //don't delete this line
/*
Fcclk = Fosc*4 = 11.0592MHz*4 = 44.2368MHz
Fpclk = Fcclk/4 = 44.2368MHz/4 = 11.0592MHz
*/
#define Tn_PWM0 0 //MATn.0作为PWM输出
#define Tn_PWM1 1 //MATn.1作为PWM输出
#define Tn_PWM2 2 //MATn.2作为PWM输出
#define Tn_PWM3 3 //MATn.3作为PWM输出
#define T0_PWM_Cyc 11059200/4000 //定时器T0的PWM周期为4K
#define T0_PR 0 //预分频寄存器为1
#define T0_PWM_Tmp T0_PWM_Cyc/4
#define T0_MATn_Value0 T0_PWM_Tmp*1 //PWM0.0匹配寄存器值,占空比75%。
#define T0_MATn_Value1 T0_PWM_Tmp*2 //PWM0.1匹配寄存器值,占空比50%。
#define T0_MATn_Value2 T0_PWM_Tmp*3 //PWM0.2匹配寄存器值,占空比25%。
#define T1_PWM_Cyc 11059200/2000 //定时器T1的PWM周期为2K
#define T1_PR 0 //预分频寄存器为1
#define T1_PWM_Tmp T1_PWM_Cyc/4
#define T1_MATn_Value0 T1_PWM_Tmp*3 //PWM1.0匹配寄存器值,占空比25%。
#define T1_MATn_Value1 T1_PWM_Tmp*2 //PWM1.1匹配寄存器值,占空比50%。
#define T1_MATn_Value2 T1_PWM_Tmp*1 //PWM1.2匹配寄存器值,占空比75%。
#define T1_MATn_Value3 T1_PWM_Tmp*1 //PWM1.3匹配寄存器值
#define T2_PWM_Cyc 11059200/1000 //定时器T2的PWM周期为1K
#define T2_PR 0 //预分频寄存器为1
#define T2_PWM_Tmp T2_PWM_Cyc/4
#define T2_MATn_Value0 T2_PWM_Tmp*1 //PWM2.0匹配寄存器值,占空比75%。
#define T2_MATn_Value1 T2_PWM_Tmp*2 //PWM2.1匹配寄存器值,占空比50%。
#define T2_MATn_Value2 T2_PWM_Tmp*3 //PWM2.2匹配寄存器值,占空比25%。
#define T3_PWM_Cyc 11059200/500 //定时器T3的PWM周期为500Hz
#define T3_PR 0 //预分频寄存器为1
#define T3_PWM_Tmp T3_PWM_Cyc/4
#define T3_MATn_Value0 T3_PWM_Tmp*3 //PWM3.0匹配寄存器值,占空比25%。
#define T3_MATn_Value1 T3_PWM_Tmp*2 //PWM3.1匹配寄存器值,占空比50%。
#define T3_MATn_Value2 T3_PWM_Tmp*1 //PWM3.2匹配寄存器值,占空比75%。
#define T3_MATn_Value3 T3_PWM_Tmp*1 //PWM3.3匹配寄存器值
/*********************************************************************************************************
** Function name: IRQ_Exception
** Descriptions: interrupt exceptional handler , change it as needed
** don't delete this function
********************************************************************************************************/
void IRQ_Exception(void)
{
}
/*******************************************************************************************
** 函数名称:Main()
** 函数功能:测试定时器的PWM功能。
*******************************************************************************************/
void Main(void)
{
TargetInit(VPBDIV_DATA, PLLCFG_DATA, MAMTIM_DATA); // don't delete
while((PLLSTAT & (1 << 10)) == 0); // can delete
PINSEL0 = 0x00000000; // 设置所有管脚连接GPIO
PINSEL1 = 0x00000000;
// 定时器0 PWM初始化
T0PWM_Init(Tn_PWM0,T0_MATn_Value0,T0_PR,T0_PWM_Cyc); //MAT0.0输出频率为4K,占空比为75%的PWM波形。
T0PWM_Init(Tn_PWM1,T0_MATn_Value1,T0_PR,T0_PWM_Cyc); //MAT0.1输出频率为4K,占空比为50%的PWM波形。
T0PWM_Init(Tn_PWM2,T0_MATn_Value2,T0_PR,T0_PWM_Cyc); //MAT0.2输出频率为4K,占空比为25%的PWM波形。
// 定时器1 PWM初始化
T1PWM_Init(Tn_PWM0,T1_MATn_Value0,T1_PR,T1_PWM_Cyc); //MAT1.0输出频率为2K,占空比为25%的PWM波形。
T1PWM_Init(Tn_PWM1,T1_MATn_Value1,T1_PR,T1_PWM_Cyc); //MAT1.1输出频率为2K,占空比为50%的PWM波形。
T1PWM_Init(Tn_PWM2,T1_MATn_Value2,T1_PR,T1_PWM_Cyc); //MAT1.2输出频率为2K,占空比为75%的PWM波形。
T1PWM_Init(Tn_PWM3,T1_MATn_Value3,T1_PR,T1_PWM_Cyc); //检测MAT1.3的输出波形。
// 定时器2 PWM初始化
T2PWM_Init(Tn_PWM0,T2_MATn_Value0,T2_PR,T2_PWM_Cyc); //MAT2.0输出频率为1K,占空比为75%的PWM波形。
T2PWM_Init(Tn_PWM1,T2_MATn_Value1,T2_PR,T2_PWM_Cyc); //MAT2.1输出频率为1K,占空比为50%的PWM波形。
T2PWM_Init(Tn_PWM2,T2_MATn_Value2,T2_PR,T2_PWM_Cyc); //MAT2.2输出频率为1K,占空比为25%的PWM波形。
// 定时器3 PWM初始化
T3PWM_Init(Tn_PWM0,T3_MATn_Value0,T3_PR,T3_PWM_Cyc); //MAT3.0输出频率为500Hz,占空比为25%的PWM波形。
T3PWM_Init(Tn_PWM1,T3_MATn_Value1,T3_PR,T3_PWM_Cyc); //MAT3.1输出频率为500Hz,占空比为50%的PWM波形。
T3PWM_Init(Tn_PWM2,T3_MATn_Value2,T3_PR,T3_PWM_Cyc); //MAT3.2输出频率为500Hz,占空比为75%的PWM波形。
T3PWM_Init(Tn_PWM3,T3_MATn_Value3,T3_PR,T3_PWM_Cyc); //检测MAT3.3的输出波形。
while(1);
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -