STM32跑马灯程序如何加入定时器功能

STM32跑马灯程序如何加入定时器功能,第1张

以下代码摘自 正点原子ALIENTEK 战舰 STM32F103 V3 开发板教程 《STM32F1 开发指南(库函数版)》第十三章 定时器中断实验。

#include "timer.h"

//通用定时器 3 中断初始化

//这里时钟选择为 APB1 的 2 倍,而 APB1 为 36M

//arr:自动重装值。

//psc:时钟预分频数

//这里使用的是定时器 3!

void TIM3_Int_Init(u16 arr,u16 psc)

{

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure

NVIC_InitTypeDef NVIC_InitStructure

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE)//①时钟 TIM3 使能

//定时器 TIM3 初始化

TIM_TimeBaseStructure.TIM_Period = arr//设置自动重装载寄存器周期的值

TIM_TimeBaseStructure.TIM_Prescaler =psc//设置时钟频率除数的预分频值

TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1//设置时钟分割

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up//TIM 向上计数

TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure) //②初始化 TIM3

TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ) //③允许更新中断

//中断优先级 NVIC 设置

NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn //TIM3 中断

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0//先占优先级 0 级

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3 //从优先级 3 级

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE //IRQ 通道被使能

NVIC_Init(&NVIC_InitStructure) //④初始化 NVIC 寄存器

TIM_Cmd(TIM3, ENABLE) //⑤使能 TIM3

}

//定时器 3 中断服务程序⑥

void TIM3_IRQHandler(void) //TIM3 中断

{

if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查 TIM3 更新中断发生与否

{

TIM_ClearITPendingBit(TIM3, TIM_IT_Update )//清除 TIM3 更新中断标志

LED1=!LED1

}

}

逻辑关系还不算复杂,最好能给个原理图!

另外写程序之前请确定一下内容

1、引脚输出0时点亮,输出1时熄灭?你的所有灯是共阳极连接的吗?如果不是还需再加反向芯片,请问选用什么芯片?

2、你准备用几个引脚控制这些灯?42个灯分别占用一个引脚的话就简单了,需要一个引脚控制多盏灯,请问选什么I/O扩展芯片?

3、STM32选用哪个型号?不同型号引脚不一样的!

4、看你的要求是不是原理图还要帮你设计?


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11080531.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-13
下一篇2023-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存