IAR软件,使用官方halt库
u32 g_counter = 0; // 全局, jiffes 滴答时钟,时间计时器;
INTERRUPT_HANDLER(TIM3_UPD_OVF_TRG_BRK_USART3_TX_IRQHandler,21)// 计数器; 50ms 中断一次
{
// disableInterrupts(); g_counter ++;
TIM3_ClearITPendingBit(TIM3_IT_Update);
// enableInterrupts();
}
#define time_after(unknown,known) ((long)(known) - (long)(unknown) < 0)
#define time_before(unkonwn,known) ((long)(unknown) - (long)(known) < 0)
#define time_after_eq(unknown,known) ((long)(unknown) - (long)(known) >= 0) //- - -
#define time_before_eq(unknown,known) ((long)(known) -(long)(unknown) >= 0)
extern u8 time3_has_start;
void SYS16M_time3_start(void)
{
//时钟配置
CLK_PeripheralClockConfig(CLK_Peripheral_TIM3, ENABLE);
//64分频,向上计数,每50ms定时中断一次
TIM3_DeInit();
TIM3_TimeBaseInit(TIM3_Prescaler_128, TIM3_CounterMode_Up, 6250); // 16M / 128 = 1/8M; (1/8M) / (1/50ms) = 6250
TIM3_ARRPreloadConfig(ENABLE);
TIM3_ITConfig(TIM3_IT_Update, ENABLE);
TIM3_Cmd(ENABLE);
time3_has_start = 1;
}
void SYS16M_time3_stop(void)
{
TIM3_Cmd(DISABLE);
CLK_PeripheralClockConfig(CLK_Peripheral_TIM3, DISABLE);
time3_has_start = 0;
}
u32 red_led_flash_time = 0;
void xxx_function(void)
{
red_led_flash_time = 0;
if(blue_led_flash_time == 0)
blue_led_flash_time = g_counter;
if(time_after(g_counter, blue_led_flash_time + ONE_SECOND))
blue_led_on;
else if(time_after(g_counter, blue_led_flash_time + TWO_SECOND))
blue_led_off;
}
上一篇:stm8s开发(三) UART的使用:串口通信
下一篇:STM8L151 DAC
推荐阅读最新更新时间:2024-11-08 21:37
设计资源 培训 开发板 精华推荐
- ST SensorTile物联网开发套件来啦!免费申请抢鲜体验等你来~
- 有奖直播 | 是德科技 InfiniiMax4.0系列高带宽示波器探头新品发布
- 泰克70周年庆 了解新品 参与掀盖有礼活动 最多可获得6次抽奖机会
- 【已结束】R&S 直播【PCI Express Gen 3 一致性测试(含demo演示)】
- 【EEWORLD第四十二届】2012年09月社区明星人物揭晓!
- 有奖直播|基于Source-down技术的全新英飞凌MOSFET,有效提升功率密度,肉眼可见
- 有奖评测:50套来自恩智浦全新快速物联网原型设计套件(价值350元)
- 【EEWORLD第四十一届】2012年08月社区明星人物揭晓!