| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- #include "delay.h"
- #include "stm32f10x_it.h"
- #if 1
- void delay_us(u32 nUs){
- uint32_t i=0,j=0;
- for(i=0;i<nUs;i++){
- for(j=0;j<9;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
|