| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #include "delay.h"
- #if 1
- void delay_us(u32 nUs){
- uint32_t i=0,j=0;
- for(i=0;i<nUs;i++){
- for(j=0;j<22;j++){
- }
- }
- }
- //简单的延时函数
- void delay_ms(u16 nms)
- {
- delay_us(nms*1000);
- }
- #endif
- #if 0
- //仿原子延时,不进入systic中断
- void delay_us(u32 nus)
- {
- u32 temp;
- SysTick->LOAD = 9*nus;
- SysTick->VAL=0X00;//清空计数器
- SysTick->CTRL=0X01;//使能,减到零是无动作,采用外部时钟源
- do
- {
- temp=SysTick->CTRL;//读取当前倒计数值
- }while((temp&0x01)&&(!(temp&(1<<16))));//等待时间到达
- SysTick->CTRL=0x00; //关闭计数器
- SysTick->VAL =0X00; //清空计数器
-
- }
-
- void delay_ms(u16 nms)
- {
-
- u32 temp;
- SysTick->LOAD = 9000*nms;
- SysTick->VAL=0X00;//清空计数器
- SysTick->CTRL=0X01;//使能,减到零是无动作,采用外部时钟源
- do
- {
- temp=SysTick->CTRL;//读取当前倒计数值
- }while((temp&0x01)&&(!(temp&(1<<16))));//等待时间到达
- SysTick->CTRL=0x00; //关闭计数器
- SysTick->VAL =0X00; //清空计数器
- }
- #endif
|