【单片机】CH32V103C8T6定时器3程序实验
代码功能:每隔1毫秒进入一次定时器中断。
每隔1秒串口打印一次数据。
time.c
#include "time.h"
#include "ch32v10x.h"
#include <stdio.h>
int w = 0;
void TIM3_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /*******************************************************************************
* Function Name : TIM3_Int_Init
* Description : 定时器3初始化,因为赫兹是频率的单位,周期=1÷频率,从单位看:秒=1÷赫兹。
* 7199:10khz,1÷10000hz(秒)=1÷10000hz(秒)* 1000000us = 100us 进行一次计数。
* arr = 10,表示计数10次产生一次定时器中断,10个100us,即1ms进一次中断函数。
* Input : None
* Return : None
*******************************************************************************/
void TIM3_Int_Init(u16 arr,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure; /*使能TIM3时钟*/
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); /*指定下次更新事件时要加载到活动自动重新加载寄存器中的周期值。*/
TIM_TimeBaseStructure.TIM_Period = arr; /*指定用于划分TIM时钟的预分频器值。*/
TIM_TimeBaseStructure.TIM_Prescaler =psc; /*时钟分频因子*/
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; /*TIM计数模式,向上计数模式*/
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; /*根据指定的参数初始化TIMx的时间基数单位*/
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); /*使能TIM3中断,允许更新中断*/
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); /*初始化TIM NVIC,设置中断优先级分组*/ /*TIM3中断*/
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; /*设置抢占优先级0*/
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; /*设置响应优先级3*/
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; /*使能通道1中断*/
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure); TIM_Cmd(TIM3, ENABLE);
} void TIM3_IRQHandler(void)
{ if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查TIM3中断是否发生。
{
TIM_ClearITPendingBit(TIM3,TIM_IT_Update); //清除TIM3的中断挂起位。
w++; if(w> 1000)
{
w= 0;
printf("Enter interrupt\n");
} }
}
main.c初始化
#include "time.h" /*******************************************************************************
* Function Name : main
* Description : Main program.
* Input : None
* Return : None
*******************************************************************************/
int main(void)
{
u8 j=0; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
Delay_Init();
USART_Printf_Init(115200); TIM3_Int_Init(4999,7199);
printf("SystemClk:%d\r\n",SystemCoreClock); while(1);
}
【单片机】CH32V103C8T6定时器3程序实验的更多相关文章
- 430单片机之定时器A功能的大致介绍
总的来说,430单片机一共有三个定时器,定时器A,定时器B,还有就是看门狗定时器,这里我们主要是讨论430单片机的定时器A的功能,定时器A的功能是我目前见过最厉害的定时器,视频上说用好定时器A的话,对 ...
- 松瀚SN8P2501 定时器初始化程序--汇编源码
/* 松瀚 SN8P2501B 定时器初始化程序 */ INI_IRQ: ;定时器T0初始化 MOV A, #01100000b ;定时器模式Fcpu/4 16M/4/4=1M 1U计一次 B0MOV ...
- 打打基础,回头看看avr单片机的定时器、中断和PWM(转)
以前小看了定时器,发现这东西还真的很讲究,那先复习复习吧. 先提提中断:我的理解就是cpu执行时,遇到中断——根据对应的中断源(硬件或软件)——pc定位中断入口地址,然后根据这里的函数指针——跳转到相 ...
- MCS-51单片机的定时器/计数器概念
一.MCS-51单片机的定时器/计数器概念 单片机中,脉冲计数与时间之间的关系十分密切,每输入一个脉冲,计数器的值就会自动累加1,而花费的时间恰好是1微秒;只要相邻两个计数脉冲之间的时间间隔相等,则计 ...
- PIC单片机的定时器
PIC单片机的定时器有3个 timer0 timer1 timer2 定时器的计算方法 256*k*Tcy=定时时间 (256-Init-value)*k*Tcy=定时时间
- 51单片机 Keil C 延时程序的简单(晶振12MHz,一个机器周期1us.)
一. 500ms延时子程序 void delay500ms(void) { unsigned char i,j,k; ;i>;i--) ;j>;j--) ;k>;k--); } 产生 ...
- 51单片机 Keil C 延时程序的简单研究
应用单片机的时候,经常会遇到需要短时间延时的情况.需要的延时时间很短,一般都是几十到几百微妙(us).有时候还需要很高的精度,比如用单片机驱动DS18B20的时候,误差容许的范围在十几us以内,不然很 ...
- 51单片机 | 模拟PWM调制控制实验
———————————————————————————————————————————— PWM(脉冲宽度调制) 对模拟信号电平进行数字编码的方法 - - - - - - - - - - - - - ...
- AVR单片机教程——定时器中断
本文隶属于AVR单片机教程系列. 中断,是单片机的精华. 中断基础 当一个事件发生时,CPU会停止当前执行的代码,转而处理这个事件,这就是一个中断.触发中断的事件成为中断源,处理事件的函数称为中断 ...
随机推荐
- SCSS学习笔记(一)
SCSS的由来 SCSS就是加强版的CSS,要讲SCSS那就一定要从SASS讲起 SASS Sass(英文全称:Syntactically Awesome Stylesheets)是一个最初由Hamp ...
- 祖先元素transform非none时在Iphone6上引起后代fixed/absolute元素的怪异表现及解决方案
如题,祖先元素transform非none时,记录一下Iphone6中引起后代元素fixed参考视图怪异表现和解决方案. 层叠关系及参考视图 层叠上下文是HTML元素的三维概念,这些HTML元素在一条 ...
- React系列——websocket群聊系统在react的实现
前奏 这篇文章仅对不熟悉在react中使用socket.io的人.以及websocket入门者有帮助. 下面这个动态图展示的聊天系统是用react+express+websocket搭建的,很模糊吧, ...
- es6零碎记忆
1:substring 和 substr var str = '0123456789' console.log(str.substring(1)); //123456789 console.log(s ...
- python爬虫---虎牙直播封面采集
代码: import requests from lxml import etree # html解析库 source = requests.get("https://www.huya.co ...
- idea 启动微服务 设置 run dashboard
微服务如果很多,启动时如果在run窗口,会不是很方便,所以idea中配置了rundashboard,有时不自动出现时,需要进行配置: 配置操作如下: 我的idea版本2020.2 1.在父工程的.id ...
- 【Android开发】简单好用的阴影库 ShadowLayout
先来看一张使用 ShadowLayout 库实现的各种阴影的效果图,如下图所示: 如上图所示,通过使用 ShadowLayout 可以控制阴影的颜色.范围.显示边界(上下左右四个边界).x 轴和 y ...
- 虚拟机上 安装 CentoOS 7.5 1804 过程记录
1.准备安装镜像 在开始安装CentOS之前,必须下载安装ISO映像.镜像可从CentOS网站https://www.centos.org/download/.提供以下基本类型的镜像: DVD ISO ...
- vue获取验证码倒计时
<template> <div> <el-button :disabled="disabled" @click="sendcode" ...
- 3天时间从零到上架AppStore流程记录
3天时间从零到上架AppStore流程记录 清明假期刚过去一周,我如愿以偿把自己想要的一个App上架了AppStore 从有idea到技术选型,从设计稿到框架开发,从提审AppStore到上架一共经历 ...