📄 main.c
字号:
/* MAIN.C file
* Copyright (c) 轩微科技
根据Time2 溢出中断,实现流水灯。
轩微科技保留所有权利.
*/
#include "stm8s.h"
#include "stm8s_gpio.h"
#include "stm8s_beep.h"
#include "stm8s_clk.h"
#include "stm8s_tim2.h"
int i=0;
//延时一段时间
void xwDelay(void)
{
int i=2;
int j=200;
while(i--)while(j--);
}
@far @interrupt void Time2YiChu (void)
{
i++;
//间断使能蜂鸣器
BEEP_Cmd(i%2);
//间断亮LED
if(i%3==0)
{
GPIO_WriteLow(GPIOD, GPIO_PIN_0);
GPIO_WriteHigh(GPIOD, GPIO_PIN_2|GPIO_PIN_3);
}
else if(i%3==1)
{
GPIO_WriteLow(GPIOD, GPIO_PIN_2);
GPIO_WriteHigh(GPIOD, GPIO_PIN_0|GPIO_PIN_3);
}
else if(i%3==2)
{
GPIO_WriteLow(GPIOD, GPIO_PIN_3);
GPIO_WriteHigh(GPIOD, GPIO_PIN_0|GPIO_PIN_2);
}
//软件延时一段时间
xwDelay();
//蜂鸣器响5次后切换系统时钟,切换后响闪频率会变高
}
main()
{
unsigned long i=0;
//反初始化GPIOD
GPIO_DeInit(GPIOD);
//实始化GPIOD,配置其第0,2,3位为推挽输出,高电平.
GPIO_Init(GPIOD, GPIO_PIN_0|GPIO_PIN_2|GPIO_PIN_3, GPIO_MODE_OUT_PP_LOW_FAST);
//反初始化BEEP
//定时器2反初始化// 主时钟默认为2M HZ
TIM2_DeInit();
//定时器2初始化,每100个毫秒中断一次
TIM2_TimeBaseInit(0, 200000);
//使能定时器2更新中断
TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE);
//启动定时器2
TIM2_Cmd(ENABLE);
// 允许CPU全局中断
enableInterrupts();
while(1)
{
/*
i++;
//间断使能蜂鸣器
BEEP_Cmd(i%2);
//间断亮LED
if(i%3==0)
{
GPIO_WriteLow(GPIOD, GPIO_PIN_0);
GPIO_WriteHigh(GPIOD, GPIO_PIN_2|GPIO_PIN_3);
}
else if(i%3==1)
{
GPIO_WriteLow(GPIOD, GPIO_PIN_2);
GPIO_WriteHigh(GPIOD, GPIO_PIN_0|GPIO_PIN_3);
}
else if(i%3==2)
{
GPIO_WriteLow(GPIOD, GPIO_PIN_3);
GPIO_WriteHigh(GPIOD, GPIO_PIN_0|GPIO_PIN_2);
}
//软件延时一段时间
xwDelay();
//蜂鸣器响5次后切换系统时钟,切换后响闪频率会变高
*/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -