STM32F103C8T6内部定时器中断控制LED和USART串口通信代码

本文介绍了如何利用STM32F103C8T6的TIM2和TIM3定时器分别实现2秒和5秒周期的任务,包括GPIO配置、定时器初始化、中断配置及串口通信,以LED闪烁和数据发送为例展示了具体操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         本实验通过STM32F103C8T6(下文统称为32)的两个内部定时器中断TIM2和TIM3同时产生周期为2秒和5秒的计数,来控制LED以2秒为周期闪烁,USART串口每5秒发送数据给电脑。

        STM32F103C8T6共有4个内部定时器,分别是TIM1、TIM2、TIM3和TIM4。其中,TIM1为高级定时器,具备捕获/比较通道和互补输出功能;而TIM2、TIM3和TIM4为通用定时器,具有捕获/比较通道,但没有互补输出功能。本实验我们采用TIM2和TIM3进行简单的定时功能,定时器的实质就是计数器,定时器的实质就是计数器,定时器的实质就是计数器,(主要的事情说三遍!!!),下面解析一下代码部分。

TIM2和TIM3定时器中断初始化配置:

第一步:开启外设时钟,APB1为TIM2和TIM3的总线,APB2为GPIO口的总线(不知道外设在哪条总线上可查询32手册AHB/APB桥(APB)小节)。直接调用库函数RCC_APB1PeriphClockCmd()和RCC_APB2PeriphClockCmd()选择对应外设设置成ENABLE,GPIO口选择GPIOA,这样对应的外设时钟就开启了。

第二步:GPIO口初始化配置,调用GPIO_Init()结构体函数进行配置,查手册可知GPIO口模式为普通推挽输出模式,GPIOA口选择Pin_0口,引脚传输频率通常选择50MHz。

第三步:内部时钟开启、定时器配置、更新标志位,调用TIM_InternalClockConfig()开启定时器内部时钟;调用TIM_TimeBaseInit()结构体配置定时器,结构体成员TIM_ClockDivision配置选择1分频,模式选择向上计数即:脉冲每过来一个上升沿计数器加一。自动重装器和预分频器的值是根据你所需的时间来计算配置的,以2秒为例:预分频器给7200得到的频率为72MHz/7200=10000Hz,当自动重装给20000时10000Hz/20000Hz=0.5Hz,根据公式T=1/f得T=1/0.5=2秒,即0.5Hz=2秒,在算自己想要的定时时间时,可保持预分频器值不变,改变自动重装器的值,来得到自己想要的时间。更新标志位是手动产生更新事件,如果不更新开启定时器中断后会立刻进入一次中断。

第四步:定时器中断配置,调用TIM_ITConfig()开启定时器中断源。调用NVIC_PriorityGroupConfig()选择中断源分组,这里选择2分组即:两个抢占优先级和两个响应优先级,如果对中断优先级没有太大要求,通常选择2分组,抢占和响应各两个。调用NVIC_Init()结构体进行中断初始化,TIM2抢占给2,响应给1,TIM3抢占给2,响应给1;STM32的中断优先级处理首先看抢占优先级,只有当两个中断的抢占优先级不同时,抢占优先级高的中断才会打断抢占优先级低的中断。在这里,TIM3的抢占优先级为1,而

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值