论坛元老
 
- 积分
- 4524
- 金钱
- 4524
- 注册时间
- 2018-5-11
- 在线时间
- 947 小时
|
发表于 2018-10-3 19:23:53
|
显示全部楼层
本帖最后由 warship 于 2018-10-3 19:31 编辑
改写成这样的话,就可以工作:
void delay_us(u32 nus)
{
u32 temp;
SysTick_Type *pMySystick;
pMySystick=SysTick_BASE;
pMySystick->LOAD=nus*fac_us; //时间加载
pMySystick->VAL=0x00; //清空计数器
pMySystick->CTRL|=SysTick_CTRL_ENABLE_Msk ; //开始倒数
do
{
temp=pMySystick->CTRL;
}while((temp&0x01)&&!(temp&(1<<16))); //等待时间到达
pMySystick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //关闭计数器
pMySystick->VAL =0X00; //清空计数器
}
#define SysTick ((SysTick_Type *) SysTick_BASE) 这句就可以不要了,这句与 SysTick_Type *pMySystick; pMySystick=SysTick_BASE;这两句等效
所以这么改基本相当于脱裤子放屁
|
|