代码功能:每隔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程序实验的更多相关文章

  1. 430单片机之定时器A功能的大致介绍

    总的来说,430单片机一共有三个定时器,定时器A,定时器B,还有就是看门狗定时器,这里我们主要是讨论430单片机的定时器A的功能,定时器A的功能是我目前见过最厉害的定时器,视频上说用好定时器A的话,对 ...

  2. 松瀚SN8P2501 定时器初始化程序--汇编源码

    /* 松瀚 SN8P2501B 定时器初始化程序 */ INI_IRQ: ;定时器T0初始化 MOV A, #01100000b ;定时器模式Fcpu/4 16M/4/4=1M 1U计一次 B0MOV ...

  3. 打打基础,回头看看avr单片机的定时器、中断和PWM(转)

    以前小看了定时器,发现这东西还真的很讲究,那先复习复习吧. 先提提中断:我的理解就是cpu执行时,遇到中断——根据对应的中断源(硬件或软件)——pc定位中断入口地址,然后根据这里的函数指针——跳转到相 ...

  4. MCS-51单片机的定时器/计数器概念

    一.MCS-51单片机的定时器/计数器概念 单片机中,脉冲计数与时间之间的关系十分密切,每输入一个脉冲,计数器的值就会自动累加1,而花费的时间恰好是1微秒;只要相邻两个计数脉冲之间的时间间隔相等,则计 ...

  5. PIC单片机的定时器

    PIC单片机的定时器有3个 timer0 timer1 timer2 定时器的计算方法 256*k*Tcy=定时时间 (256-Init-value)*k*Tcy=定时时间

  6. 51单片机 Keil C 延时程序的简单(晶振12MHz,一个机器周期1us.)

    一. 500ms延时子程序 void delay500ms(void) { unsigned char i,j,k; ;i>;i--) ;j>;j--) ;k>;k--); } 产生 ...

  7. 51单片机 Keil C 延时程序的简单研究

    应用单片机的时候,经常会遇到需要短时间延时的情况.需要的延时时间很短,一般都是几十到几百微妙(us).有时候还需要很高的精度,比如用单片机驱动DS18B20的时候,误差容许的范围在十几us以内,不然很 ...

  8. 51单片机 | 模拟PWM调制控制实验

    ———————————————————————————————————————————— PWM(脉冲宽度调制) 对模拟信号电平进行数字编码的方法 - - - - - - - - - - - - - ...

  9. AVR单片机教程——定时器中断

    本文隶属于AVR单片机教程系列.   中断,是单片机的精华. 中断基础 当一个事件发生时,CPU会停止当前执行的代码,转而处理这个事件,这就是一个中断.触发中断的事件成为中断源,处理事件的函数称为中断 ...

随机推荐

  1. 纯CSS实现柱形图

    CSS在处理排版之强大,没有做不到,只有想不到.下面我们将一同实现一个柱状图. 先打好一个具体的框架.我们利用无序列表做整体,里面的东西我们根本选择内联无素span,strong,em来填充. < ...

  2. H5复制粘贴双端适配的解决方案(终极版)

    前言 最终适配所有机型的方案基于clipboardjs官网https://clipboardjs.com/ 这个库由几个不同的CDN提供商托管.选择你最喜欢的:) jsDelivr <scrip ...

  3. RedisDesktopManager 连接不上远程 Redis

    1.首先确保远程redis-server已经启用: 2.连接不到可能的原因: redis3.2以上版本默认开启保护模式,不允许外网访问,需要修改redis.conf文件 3.redis.conf文件需 ...

  4. ubantu系统之 在桌面添加应用快捷方式

    1. 首先在终端使用命令:sudo nautilus 这个命令会让你用root权限打开文件管理器,输入这个命令然后输入密码确认之后会弹出一个目录窗口;2. 然后我们就要找到目录:/usr/share/ ...

  5. 彻底理解volatile关键字

    1. volatile简介 在上一篇文章中我们深入理解了java关键字,我们知道在java中还有一大神器就是关键volatile,可以说是和synchronized各领风骚,其中奥妙,我们来共同探讨下 ...

  6. nodeJs入门的第一节课

    nodejs是什么? nodejs的架构模式以及优缺点 nodejs异步IO nodejs事件驱动 nodejs单线程 nodejs应用场景 一.nodejs是什么? 1.1nodejs是一个开源的. ...

  7. iOS开发 将html 富文本文字 转换成oc 的富文本

    - (NSMutableAttributedString *)mf_htmlAttribute:(NSString *)htmlString{ htmlString = [NSString strin ...

  8. python---反转链表

    class Node: def __init__(self, data): self.data = data self.next = None class Solution: "" ...

  9. Shiro+springboot+mybatis+EhCache(md5+salt+散列)认证与授权-03

    从上文:Shiro+springboot+mybatis(md5+salt+散列)认证与授权-02 当每次进行刷新时,都会从数据库重新查询数据进行授权操作,这样无疑给数据库造成很大的压力,所以需要引入 ...

  10. Java重载容易引发的错误—返回类型

    方法的签名仅仅与方法名和参数类型相关,而与访问控制符.返回类型无关,以及方法体中的内容都没有关系,下面用一个例子说明; 如果Student类两种签名,myStudent(int,int)返回int 类 ...