STM8的TIM1定时器简单使用
来源:互联网 发布:软件之家官网 编辑:程序博客网 时间:2024/06/05 08:44
STM8的TIM1定时器简单使用
STM8的TIM1是16位高级控制定时器,简单的定时溢出中断。功能实现LED1亮500ms,灭500ms,循环往复。
#i nclude <iostm8s103f3.h>
void CLK_init(void)
{
CLK_CKDIVR = 0x08; // 16M内部RC经2分频后系统时钟为8M
}
void GPIO_init(void)
{
PD_DDR = 0x08; // 配置PD端口的方向寄存器PD3输出
PD_CR1 = 0x08; // 设置PD3为推挽输出
}
void TIM1_init(void)
{
TIM1_PSCRH = 0x1F; // 8M系统时钟经预分频f=fck/(PSCR+1)
TIM1_PSCRL = 0x3F; // PSCR=0x1F3F,f=8M/(0x1F3F+1)=1000Hz,每个计数周期1ms
TIM1_ARRH = 0x01; // 自动重载寄存器ARR=0x01F4=500
TIM1_ARRL = 0xF4; // 每记数500次产生一次中断,即500ms
TIM1_IER = 0x01; // 允许更新中断
TIM1_CR1 = 0x01; // 计数器使能,开始计数
}
#pragma vector=TIM1_OVR_UIF_vector
__interrupt void TIM1_OVR_UIF(void)
{
PD_ODR ^ = 0x08 //LED接在PD3上
TIM1_SR1 = 0x00; // 清除更新中断标记,这步不能漏掉,否则会连续进入中断程序
}
void init_devices(void)
{
asm("sim"); // 关全局中断
CLK_init();
GPIO_init();
TIM1_init();
asm("rim"); // 开全局中断
}
void main( void )
{
init_devices();
// 主循环里没有程序需要执行
while(1);
}
#i nclude <iostm8s103f3.h>
void CLK_init(void)
{
CLK_CKDIVR = 0x08; // 16M内部RC经2分频后系统时钟为8M
}
void GPIO_init(void)
{
PD_DDR = 0x08; // 配置PD端口的方向寄存器PD3输出
PD_CR1 = 0x08; // 设置PD3为推挽输出
}
void TIM1_init(void)
{
TIM1_PSCRH = 0x1F; // 8M系统时钟经预分频f=fck/(PSCR+1)
TIM1_PSCRL = 0x3F; // PSCR=0x1F3F,f=8M/(0x1F3F+1)=1000Hz,每个计数周期1ms
TIM1_ARRH = 0x01; // 自动重载寄存器ARR=0x01F4=500
TIM1_ARRL = 0xF4; // 每记数500次产生一次中断,即500ms
TIM1_IER = 0x01; // 允许更新中断
TIM1_CR1 = 0x01; // 计数器使能,开始计数
}
#pragma vector=TIM1_OVR_UIF_vector
__interrupt void TIM1_OVR_UIF(void)
{
PD_ODR ^ = 0x08 //LED接在PD3上
TIM1_SR1 = 0x00; // 清除更新中断标记,这步不能漏掉,否则会连续进入中断程序
}
void init_devices(void)
{
asm("sim"); // 关全局中断
CLK_init();
GPIO_init();
TIM1_init();
asm("rim"); // 开全局中断
}
void main( void )
{
init_devices();
// 主循环里没有程序需要执行
while(1);
}
0 0
- STM8的TIM1定时器简单使用
- stm8 16位定时器TIM1
- STM8红外捕获解析 使用TIM1 16位高级控制定时器
- stm32 基于TIM1定时器的PWM输出
- STM8 tim1 ch1 PWM输出
- STM8 TIM2 定时器的问题
- STM32F407定时器TIM1中断
- STM32F4 定时器TIM1输出七路PWM信号【使用库函数】
- STM32F4 定时器TIM1输出七路PWM信号【使用库函数
- STM32F107高级定时器TIM1使用互补PWM输出
- STM32F107高级定时器TIM1使用 增量编码器接口配置
- STM8 定时器
- STM8S105 TIM1 TIM2 定时器的定时时间初始化
- 定时器的简单使用
- 关于stm8定时器2的中断
- STM32之TIM1高级定时器
- Spring定时器的简单使用
- Spring定时器的简单使用
- JavaOO-④
- 什么是面向对象编程?
- HDU2141.Can you find it?——不同的二分不同的TLE
- 《起跑吧,Opa》 -- 中译本 第五章 使用HTML和CSS来创建UI
- 解题报告 之 POJ3469 Dual Core CPU
- STM8的TIM1定时器简单使用
- 第32章 数据库的备份和恢复
- 去除网络请求中数据的链接
- Genymotion配置及使用教程(最新最完整版附各部分下载地址)
- 编程之美2015资格赛-回文子序列个数题解
- HTTP和Socket连接的区别
- leetcode挨个儿刷150428(4):Add Two Numbers
- 关于打开新链接后js没有加载的问题
- UVA 11437(几何入门)