当前位置: 首页 > news >正文

2016年网站建设总结培训学校

2016年网站建设总结,培训学校,青岛企业网站建设优化,网站设计的论坛STC8系列定时器(Timer)串口库函数使用指南 STC8系列单片机内置多个定时器和串口模块,官方库函数简化了配置流程。以下为关键函数及使用方法: 定时器头文件和依赖 1. Timer.c Timer.h Timer_Isr.c 2. NVIC.c NVIC.h #include &q…

STC8系列定时器(Timer)串口库函数使用指南

STC8系列单片机内置多个定时器和串口模块,官方库函数简化了配置流程。以下为关键函数及使用方法:

定时器头文件和依赖

1. Timer.c Timer.h Timer_Isr.c
2. NVIC.c NVIC.h

#include "Timer.h"
#include "NVIC.h"

实现初始化定时器和中断函数

需在中断控制寄存器中开启相应中断:

void	Timer_config(void)
{TIM_InitTypeDef		TIM_InitStructure;						//结构定义//定时器0做16位自动重装, 中断频率为1000HZTIM_InitStructure.TIM_Mode      = TIM_16BitAutoReload;	//指定工作模式,   TIM_16BitAutoReload,TIM_16Bit,TIM_8BitAutoReload,TIM_16BitAutoReloadNoMaskTIM_InitStructure.TIM_ClkSource = TIM_CLOCK_1T;		//指定时钟源,     TIM_CLOCK_1T,TIM_CLOCK_12T,TIM_CLOCK_ExtTIM_InitStructure.TIM_ClkOut    = DISABLE;				//是否输出高速脉冲, ENABLE或DISABLETIM_InitStructure.TIM_Value     = 65536UL - (MAIN_Fosc / 1000UL);		//初值,TIM_InitStructure.TIM_Run       = ENABLE;				//是否初始化后启动定时器, ENABLE或DISABLETimer_Inilize(Timer0,&TIM_InitStructure);				//初始化Timer0	  Timer0,Timer1,Timer2,Timer3,Timer4NVIC_Timer0_Init(ENABLE,Priority_0);		//中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
}

中断使能配置

需在中断控制寄存器中开启相应中断:

EA = 1;                 //全局中断开关
ET0 = 1;                //定时器0中断允许
ES = 1;                 //串口中断允许

波特率计算方法

STC8系列波特率计算公式:
在这里插入图片描述
在这里插入图片描述

数据收发示例

发送数据使用:

if(COM1.RX_TimeOut > 0) {//超时计数if(--COM1.RX_TimeOut == 0) {if(COM1.RX_Cnt > 0) {// 这里处理收到的数据,做具体的逻辑,可以调用自己的on_uart1_recvfor(i=0; i<COM1.RX_Cnt; i++)	{// RX1_Buffer[i]存的是接收的每个字节,写出用 TX1_write2buff}}COM1.RX_Cnt = 0;}
}// 不要处理的太快
delay_ms(10);

方法1
接收数据通过中断处理:修改Timer_Isr.c实现中断函数的调用,并在main.c中声明实现timer0_call函数

extern void timer0_call();//声明//========================================================================
// 函数: Timer0_ISR_Handler
// 描述: Timer0中断函数.
// 参数: none.
// 返回: none.
// 版本: V1.0, 2020-09-23
//========================================================================
void Timer0_ISR_Handler (void) interrupt TMR0_VECTOR		//进中断时已经清除标志
{// TODO: 在此处添加用户代码timer0_call();
}

然后在main.c中实现timer0_call:

void timer0_call(){// TODO: 在此处添加用户代码
}

方法2
直接在main.c中实现interrupt函数(记得删掉或注释掉Timer_Isr.c中对应的中断函数)

void Timer0_ISR (void) interrupt TMR0_VECTOR		//进中断时已经清除标志
{// TODO: 在此处添加用户代码
}

注意事项

  • 使用1T模式时需设置AUXR寄存器对应位
  • 12时钟模式下定时器初值计算与1T模式不同
  • 多串口系统需注意中断优先级配置

以上为STC8系列定时器与串口库函数的核心使用方法,具体参数需根据实际时钟频率和通信需求调整。

http://www.dtcms.com/a/461485.html

相关文章:

  • 网站最下端怎么做动画设计培训机构
  • 用python制作相册浏览小工具
  • 字节跳动ByteDance前端考前总结
  • codex使用chrome-devtools-mcp最佳实践
  • 【Linux命令从入门到精通系列指南】export 命令详解:环境变量管理的核心利器
  • python 自动化采集 ChromeDriver 安装
  • 苏州招聘网站建设推广费
  • java8提取list中对象有相同属性值的对象或属性值
  • cuda编程笔记(26)-- 核函数使用任务队列
  • 存储芯片核心产业链研发实力:兆易创新、北京君正、澜起科技、江波龙、长电科技、佰维存储,6家龙头公司研发实力深度数据
  • 《Seq2Time: Sequential Knowledge Transfer for Video LLMTemporal Grounding》
  • 山东省建设部网站官网网站备案审核通过后
  • 浏览器兼容性问题处理
  • Day 09(下) B2a实例解说----exampleB2a.cc+ActionInitialization+PrimaryGeneratorAction
  • 分布式锁:Redisson的可重入锁
  • 计算机硬件相关(AI回答)
  • 网站设计中的用户体验大型网站需要什么样的团队
  • 淘宝网站开发方式网站托管 济南
  • 重庆网站seo案例网站推广用什么方法最好
  • sql报错:java.sql.SQLSyntaxErrorException: Unknown column ‘as0‘ in ‘where clause‘
  • 做网站是什么公司做陶瓷公司网站
  • CentOS 7上安装SonarQube8.9
  • 遗留系统微服务改造(二):数据迁移实战攻略与一致性保证
  • IO操作(Num22)
  • 领码方案|微服务与SOA的世纪对话(6):组织跃迁——智能架构下的团队与文化变革
  • 怎么什么软件可以吧做网站网站被百度收录很重要
  • C++ 单例模式(Singleton)详解
  • 面向未来的数据平台
  • C++5d
  • Transformer实战(21)——文本表示(Text Representation)