| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- #include "delay.h"
- #include "stm32f10x_tim.h"
- #include "TypeDefine.h"
- //延时nus
- //nus为要延时的us数.
- //void delay_us(uint16_t nus)
- //{
- // uint8_t temp=0;
- // for(;nus>0;nus--)
- // {
- // for(temp=0; temp< 100;temp++);
- // }
- //
- //}
- //uint8_t hornTXDFlag = 0;
- void delay_us(uint16_t nus)
- {
- //// TIM3_Int_Init(nus-1,8000-1);
- // TIM_SetAutoreload(TIM3,nus);
- // TIM_ITConfig(TIM3, TIM_FLAG_Update,ENABLE);
- // TIM_Cmd(TIM3, ENABLE); //使能TIMx
- // while(hornTXDFlag == 0)
- // {
- //
- // }
- // hornTXDFlag = 0;
-
-
- uint16_t counter=nus;
- TIM_Cmd(TIM3,ENABLE);
- TIM_SetCounter(TIM3,counter); //设置计数值
-
- while(counter>0)
- {
- counter=TIM_GetCounter(TIM3);
- }
- TIM_Cmd(TIM3,DISABLE);
- }
- void TIM3_Int_Init(uint16_t arr,uint16_t psc)
- {
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
- //NVIC_InitTypeDef NVIC_InitStructure;
- RCC_HCLKConfig(RCC_SYSCLK_Div1);
- RCC_PCLK1Config(RCC_HCLK_Div1);
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能
-
- //定时器TIM3初始化
- TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
- TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值
- TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim
- TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Down; //TIM向上计数模式
- TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据指定的参数初始化TIMx的时间基数单位
- TIM_ClearFlag(TIM3, TIM_FLAG_Update);
- TIM_ITConfig(TIM3, TIM_FLAG_Update,ENABLE);
- TIM_Cmd(TIM3, ENABLE); //使能TIMx
- }
- //void TIM3_Int_Init(uint16_t arr,uint16_t psc)
- //{
- // TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
- // NVIC_InitTypeDef NVIC_InitStructure;
- // RCC_HCLKConfig(RCC_SYSCLK_Div1);
- // RCC_PCLK1Config(RCC_HCLK_Div1);
- // RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能
- //
- // //定时器TIM3初始化
- // TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
- // TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值
- // TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim
- // TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式
- // TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据指定的参数初始化TIMx的时间基数单位
- //
- // TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断
- // //中断优先级NVIC设置
- // NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3中断
- // NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先占优先级0级
- // NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //从优先级3级
- // NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
- // NVIC_Init(&NVIC_InitStructure); //初始化NVIC寄存器
- // TIM_ClearFlag(TIM3, TIM_FLAG_Update);
- // TIM_Cmd(TIM3, DISABLE); //使能TIMx
- //}
- ////定时器3中断服务程序
- //void TIM3_IRQHandler(void) //TIM3中断
- //{
- // if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查TIM3更新中断发生与否
- // {
- // TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx更新中断标志
- // TIM_ClearFlag(TIM3, TIM_FLAG_Update);
- // TIM_ITConfig(TIM3, TIM_FLAG_Update,DISABLE);
- // TIM_Cmd(TIM3, DISABLE); //使能TIMx
- // hornTXDFlag = 1;
- //// RLED = !RLED;
- // }
- //}
|