STM8的C语言编程(5)--8位定时器应用之一
来源:http://www.tudoupe.com时间:2022-06-28
STM8 的 C 语言编程( 5 )-- 8 位定时器应用之一
在 STM8 单片机内有多个计时器资源 8 一个固定的计时器,也是常见的 16 位置计时器和先进的计时器。 今天的实验是最简单的 8 位定时器 TIM4 拖延,然后开车 LED 为了简化,这里是一个程序查询,以确定时间表是否生成更新事件,以确定时间表延迟是否结束。
同样还是利用 ST 产生一种开发工具的 C 修改程序的框架,然后修改它 main.c ,修改后的代码如下。
编译后,下载到开发板上,运行程序,你可以看到 LED 在闪烁或使用无线电时,你可以 LED 引脚上看到方波。
这里特别提醒的是,从 ST 在手册中,这个计时器是一个附加程序 1 这个计数器,但在实验过程中我感觉不太好,经过反复的实验,我认为应该减少 1 计算器(也许我的手册是错的,也许有误解)。 例如,在调度器中插入自动加载注册表时 255 在最低的频率上,按照下面的代码计算,生成的频率为 30HZ 在启动时,输入自动装载注册表 1 所产生的最大波频率大约是 3.9K 就是说,实际频率是 ARR 寄存器的值 +1 。
// 程序描述:通过初始化计时器 4 ,进行延时,驱动 LED 闪烁
// LED 接在 MCU 的 GPIO 的 PD3 上
#include "STM8S207C_S.h"
main()
{
// 首先初始化 GPIO
PD_DDR = 0x08;
PD_CR1 = 0x08; // 将 PD3 设置成推挽输出
PD_CR2 = 0x00;
// 然后初始化定时器 4
TIM4_IER = 0x00; // 禁止中断
TIM4_EGR = 0x01; // 允许产生更新事件
TIM4_PSCR = 0x07; // 计数器时钟 = 主时钟 /128=2MHZ/128
// 相当于计数器周期为 64uS
TIM4_ARR = 255; // 重载时设置注册表值, 255 是最大值
TIM4_CNTR = 255; // 设定计数器的初值
// 定时周期 =(ARR+1)*64=16320uS
TIM4_CR1 = 0x01; // b0 = 1, 允许计数器工作
// b1 = 0, 允许更新
// 设置控制器,开始计时器
while(1) // 进入无限循环
{
while((TIM4_SR1 & 0x81) == 0x00); // 等待更新标志
TIM4_SR1 = 0x00; // 清除更新标志
PD_ODR = PD_ODR ^ 0x08; // LED 驱动信号取反
// LED 闪烁频率 =2MHZ/128/255/2=30.63
}
}
上一篇:电脑新手怎么重装系统啊
下一篇:河南松峰电气:接地系统原理!
相关新闻
- 2023-05-06 微pe怎么初始化U盘(微pe怎么恢复初
- 2023-05-06 Xp系统boot 进入pe(boot manager 怎么进入
- 2023-05-06 win pe修复bcdboot(pe修复系统)
- 2023-05-06 win7更新失败 pe(win7更新失败还原更
- 2023-05-06 u盘装了pe读取不了(u盘能进pe读取不
- 2023-05-06 u盘pe 发热(u盘发热烫手)
- 2023-05-06 u盘pe下看不到硬盘(u盘启动pe看不到
- 2023-05-06 pe盘 ntfs(u盘ntfs格式)
- 2023-05-06 sony笔记本进入pe模式(联想笔记本怎
- 2023-05-06 pe启动盘进不去(pe启动盘进不去系统
|
|
|
|
|
|
|
|
|
|