话不多说….直接贴函数
延时控件
- /***********************************************************************************************
- 功能:初始化延时模块--PIT
- 形参:0
- 返回:0
- 详解:此函数用于初始化延时模块,使用函数时必须调用。否则会造成延时函数出错
- ************************************************************************************************/
- void DelayInit_PIT(void)
- {
- SIM->SCGC |= SIM_SCGC_PIT_MASK; //使能PIT门控时钟
- PIT->MCR &= ~PIT_MCR_MDIS_MASK; //定时器时钟使能
- }
- /*****************************************************************************************
- 功能:PIT-US级延时函数
- 形参:需要延时多少US
- 返回:0
- *****************************************************************************************/
- void DelayUs_PIT(uint32_t us)
- {
- uint32_t temp;
- PIT->CHANNEL[0].LDVAL = us*(BUS_CLK_HZ/1000000); //加载us数值
- PIT->CHANNEL[0].TCTRL |= PIT_TCTRL_TEN_MASK; //使能PIT0,开始计数
- do
- {
- temp = PIT->CHANNEL[0].T**;
- }while(temp != 0x1); //等待时间到达
- PIT->CHANNEL[0].TCTRL &= ~PIT_TCTRL_TEN_MASK; //关闭PIT0,停止计数
- PIT->CHANNEL[0].T** |= 0x1;
- }
- /**********************************************************************************************
- 功能:PIT-MS级延时函数
- 形参:MS需要延时多少MS
- 返回:0
- **********************************************************************************************/
- void DelayMs_PIT(uint32_t ms)
- {
- uint32_t temp;
- PIT->CHANNEL[0].LDVAL = ms*(BUS_CLK_HZ/1000); //加载ms数值
- PIT->CHANNEL[0].TCTRL |= PIT_TCTRL_TEN_MASK; //使能PIT0,开始计数
- do
- {
- temp = PIT->CHANNEL[0].T**;
- }while(temp != 0x1); //等待时间到达
- PIT->CHANNEL[0].TCTRL &= ~PIT_TCTRL_TEN_MASK; //关闭PIT0,停止计数
- PIT->CHANNEL[0].T** |= 0x1;
- }
|