📄 delay.c
字号:
/*[头文件]*/
#include "GP32C.H" //包含头文件
/*函数声明*/
void PWMconf(unsigned int); //PWM设置
void PWMInit(unsigned int Period);
/*Delay_ms:毫秒级延时函数------------------------------*
*功 能:延时函数 *
*参 数:i=延时时间(ms) (i取值范围:1-255) *
*返 回:无 *
*-----------------------------------------------------*/
void Delay_ms(unsigned char i)
{ unsigned char j;
unsigned char u;
for(j=0;j<i;j++)
for(u=0;u<=250;u++);
}
void PWMconf(unsigned int Hz)
{
unsigned int Period,Duty;
Period=2457600/64/Hz;
PWMInit(Period);
Duty=Period/1.2;
T1SC|=(1<<5); //停止定时器1计数器计数
//[设置PWM脉宽]
T1CH0H = (Duty>>8); //设置高字节
T1CH0L = Duty; //设置低字节
T1SC&=~(1<<5); //允许定时器1计数器计数
Delay_ms(2000); //延时100ms
}
/*PWMconf:PWM初始化设置--------------------------------*
* 功 能:PWM脉冲周期、占空比的设置 *
* 参 数:rate=脉宽时钟数,cyc=脉冲周期时钟数 *
* 返 回:无 *
*-----------------------------------------------------*/
void PWMInit(unsigned int Period)
{
unsigned int Temp=Period;
//不允许溢出中断,不启动计数,分频因子=64,置位TSTOP,TRST
T1SC = 0x36;
//[设置PWM周期]
T1MODH = (Temp>>8);
T1MODL = Period;
//[初始化设置PWM脉宽为0]
T1CH0H = 0x00;
T1CH0L = 0x00;
//设为PWM模式,不允许输出比较中断,输出低电平,不带缓冲
T1SC0 = 0x1E;
//允许定时器1计数寄存器计数
T1SC &= 0xDF;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -