今天有客户搞中断延时,搞了半天没搞定,故花了几分钟,写了个demo,给需要的朋友参考。
代码如下:
[mw_shl_code=c,true]
vu32 timdelay=0;
void delay(u32 ntime)
{
timdelay=ntime;
while(timdelay);
}
//systick中断服务函数,使用OS时用到
void SysTick_Handler(void)
{
if(timdelay)timdelay--;
}
int main(void)
{
SysTick_Config(SystemCoreClock/1000);
//delay_init(168); //初始化延时函数
LED_Init(); //初始化LED端口
/**下面是通过直接操作库函数的方式实现IO控制**/
while(1)
{
GPIO_ResetBits(GPIOF,GPIO_Pin_9); //LED0对应引脚GPIOF.9拉低,亮 等同LED0=0;
GPIO_SetBits(GPIOF,GPIO_Pin_10); //LED1对应引脚GPIOF.10拉高,灭 等同LED1=1;
delay(500); //延时500ms
GPIO_SetBits(GPIOF,GPIO_Pin_9); //LED0对应引脚GPIOF.0拉高,灭 等同LED0=1;
GPIO_ResetBits(GPIOF,GPIO_Pin_10); //LED1对应引脚GPIOF.10拉低,亮 等同LED1=0;
delay(500); //延时500ms
}
}[/mw_shl_code] |