/*************************************************************/
/* this programme for Time setup */
/* Company: New Future */
/* Programmer: windy */
/* phone: 13891912727 weixin same name */
/* Email: cjfwindy@163.com */
/* Time: 2020-10-26 15:16 */
/* Copyright(C) 2020 New Future All rights reserved */
/*************************************************************/
#include "global.h"
//=================================================================================
//Timer2初始化程序
void InitTMR2(void)
{
CLK_PCKENR1_PCKEN10 = 1;
TIM2_PSCR = 0x00; // The counter clock frequency fCK_CNT is equal to fCK_PSC / 2(PSC[2:0])
TIM2_ARRL = LoByte(65536-TIME_BASE1*0x3E80); // set next interrupt time TIME_BASE1 ms
TIM2_ARRH = HiByte(65536-TIME_BASE1*0x3E80);
TIM2_CNTRL = TIM2_ARRL;
TIM2_CNTRH = TIM2_ARRH;
TIM2_CR1_CEN = 1; // Counter enabled
TIM2_IER_UIE = 1; // Update interrupt enabled
}
//-----------------------------------------------------------------
//Timer2初始化程序 PWM
void TIM2_Init(void)
{
WORD val;
/* TIM2 CC2 control LED Brightness */
CLK_PCKENR1_PCKEN10 = 1;
TIM2_CR1_bit.CEN = 0; //停止计数
TIM2_CCMR1 |= 0x60; /* Output mode PWM1. */
//TIM2_CCMR2 |= 0x60; /* Output mode PWM1. */
TIM2_CCER1 |= 0x03; /* CC polarity low,enable PWM output */
//TIM2_CCER1 |= 0x10; /* CC2 polarity high,enable PWM output */
//TIM2_ARRH = 0x7D;
//TIM2_ARRL = 0x00; /* Freq control register: ARR */
TIM2_ARRH = HiByte(FREQUENCESTART);
TIM2_ARRL = LoByte(FREQUENCESTART); /* Freq control register: ARR */
//TIM2_CCR1H = 0x0C; /* Dutycycle control register: CCR 10% */
//TIM2_CCR1L = 0x80; /* Dutycycle control register: CCR */
val = POWERSTART + PWM_VAL * POWERBASE;
TIM2_CCR1H = HiByte(val);
TIM2_CCR1L = LoByte(val);
//TIM2_CCR2H = HiByte(val);
//TIM2_CCR2L = LoByte(val);
//TIM2_PSCR = 0x00; /* Configure TIM2 prescaler =1 */
//TIM2_CR1 |= 0x01;
TIM2_PSCR = 0x07; /* Configure TIM2 prescaler =128 */
TIM2_BKR_bit.MOE = 1;
TIM2_CR1 |= 0x81;
}
//=================================================================================
//Timer1初始化程序 PWM
void TIM1_Init(void)
{
/* TIM1 CC2,CC3 control LED Brightness */
CLK_PCKENR2_PCKEN21 = 1;
TIM1_CR1_bit.CEN = 0; //停止计数
TIM1_CCMR1 |= 0x60; /* Output mode PWM1. < 有效 */
TIM1_CCMR2 |= 0x60; /* Output mode PWM1. < 有效 */
//TIM1_CCMR3 |= 0x70; /* Output mode PWM2. */
TIM1_CCMR3 |= 0x60; /* Output mode PWM1. */
TIM1_CCER1 |= 0x01; /* CC1 polarity high,enable PWM output */
//TIM1_CCER1 |= 0x10; /* CC2 polarity high,enable PWM output */
//TIM1_CCER2 |= 0x01; /* CC3 polarity high,enable PWM output */
TIM1_ARRH = 0x7D; // 500Hz 越大频率越低 5Hz(分频了) 16000000/32000
TIM1_ARRL = 0x00; /* Freq control register: ARR
//TIM1_ARRH = 0x02; // 24KHz(无预分频了)
//TIM1_ARRL = 0x9A; /* Freq control register: ARR */
TIM1_CCR1H = 0x06; /* Dutycycle control register: CCR */
TIM1_CCR1L = 0x40; /* Dutycycle control register: CCR */
TIM1_CCR2H = 0x02; /* Dutycycle control register: CCR */
TIM1_CCR2L = 0x80; /* Dutycycle control register: CCR */
TIM1_CCR3H = 0x0C; /* Dutycycle control register: CCR */
TIM1_CCR3L = 0x80; /* Dutycycle control register: CCR */
// 越大占空比越高
//TIM1_CCR2H = HiByte(PWM_VAL);
//TIM1_CCR2L = LoByte(PWM_VAL);
TIM1_PSCRH = 0x00; /* Configure TIM1 prescaler =1 */
TIM1_PSCRL = 0x00; /* Configure TIM1 prescaler =1 */
//TIM1_PSCRH = 0x00; /* Configure TIM1 prescaler =100 */
//TIM1_PSCRL = 0x63;
//TIM1_CCMR1_bit.OC1PE = 1; // 预装载使能
//TIM1_CCMR2_bit.OC2PE = 1; // 预装载使能
//TIM1_CCMR3_bit.OC3PE = 1; // 预装载使能
TIM1_BKR_bit.MOE = 1;
TIM1_CR1 |= 0x81;
}
//-----------------------------------------------------------------
//Timer1初始化程序 2ms
void InitTMR1(void)
{
CLK_PCKENR2_PCKEN21 = 1;
//TIM1_PSCR = 0x00; // The counter clock frequency fCK_CNT is equal to fCK_PSC / 2(PSC[2:0])
TIM1_PSCRH = 0x00; /* Configure TIM1 prescaler =1 */
TIM1_PSCRL = 0x00;
TIM1_ARRL = LoByte(65536-TIME_BASE1*0x3E80); // set next interrupt time TIME_BASE1 ms
TIM1_ARRH = HiByte(65536-TIME_BASE1*0x3E80);
//TIM1_ARRL = LoByte(65536-TIME_BASE1*0x640); // set next interrupt time TIME_BASE1 ms
//TIM1_ARRH = HiByte(65536-TIME_BASE1*0x640);
TIM1_CNTRL = TIM1_ARRL;
TIM1_CNTRH = TIM1_ARRH;
TIM1_CR1_DIR = 0; // 0:Counter used as up-counter
TIM1_CR1_CEN = 1; // Counter enabled
TIM1_IER_UIE = 1; // Update interrupt enabled
}
//=================================================================================
//Timer4初始化程序 4Mhz
void InitTMR4(void)
{
CLK_PCKENR1 |= 0x04;
TIM4_PSCR = 0x02; // The counter clock frequency fCK_CNT is equal to fCK_PSC / 2(PSC[2:0]) 2 0次方 16
TIM4_ARR = 255; // set next interrupt time
TIM4_CNTR = TIM4_ARR;
TIM4_CR1_ARPE = 1; // 自动重装载预装载允许位
TIM4_CR1_CEN = 1; // Counter enabled
TIM4_IER_UIE = 1; // Update interrupt enabled
}
//=================================================================================