STM32
登录
直播中
那年我十七_
12年用户
532经验值
私信
关注
[问答]
如何去配置STM32的定时器使数码管循环显示从0~9的数字呢
开启该帖子的消息推送
STM32
数码管
定时器
怎样在Keil for ARM V5中去编写代码呢?
如何去配置
STM32
的定时器使数码管循环显示从0~9的数字呢?
回帖
(1)
李丹丹
2021-12-2 11:23:56
利用已经建立的工程模板,在Keil for ARM V5中编写代码,实现如下功能:配置相应的GPIO口为通用输出口,配置STM32的定时器3,使数码管循环显示从0~9的数字,每1秒钟数字加1。
main.c:
#include
#include
#include
#include
int main()
{
delay_init();
TIM_SetCompare1(TIM1, 2000);
TIM3_Int_Init(4999,7199);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE );//??GPIOB??
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6;//????8,9??
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //输出
GPIO_Init(GPIOB, &GPIO_InitStructure);
while(1)
{
}
}
timer.c:
#include "timer.h"
#include "sys.h"
uint16_t table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
u16 i=0;
u16 temp;
void TIM3_Int_Init(u16 arr,u16 psc)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
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_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
TIM_Cmd(TIM3,ENABLE); //
}
void TIM3_IRQnHandler(void)
{
if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET)
{
i++;
temp=table[i%10];
GPIO_Write(GPIOB,temp);
}
TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
}
timer.h:
#ifndef __TIMER_H
#define __TIMER_H
#include "sys.h"
void TIM3_Int_Init(u16 arr,u16 psc);
#endif
利用已经建立的工程模板,在Keil for ARM V5中编写代码,实现如下功能:配置相应的GPIO口为通用输出口,配置STM32的定时器3,使数码管循环显示从0~9的数字,每1秒钟数字加1。
main.c:
#include
#include
#include
#include
int main()
{
delay_init();
TIM_SetCompare1(TIM1, 2000);
TIM3_Int_Init(4999,7199);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE );//??GPIOB??
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6;//????8,9??
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //输出
GPIO_Init(GPIOB, &GPIO_InitStructure);
while(1)
{
}
}
timer.c:
#include "timer.h"
#include "sys.h"
uint16_t table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
u16 i=0;
u16 temp;
void TIM3_Int_Init(u16 arr,u16 psc)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
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_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
TIM_Cmd(TIM3,ENABLE); //
}
void TIM3_IRQnHandler(void)
{
if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET)
{
i++;
temp=table[i%10];
GPIO_Write(GPIOB,temp);
}
TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
}
timer.h:
#ifndef __TIMER_H
#define __TIMER_H
#include "sys.h"
void TIM3_Int_Init(u16 arr,u16 psc);
#endif
举报
更多回帖
rotate(-90deg);
回复
相关问答
STM32
数码管
定时器
定时器
怎样
去
实现1秒时
数码管
数字
自动加一并
循环
?
2021-07-16
2319
STM32
F103RBT6
定时器
是怎样
去
刷新LED
数码管
并更新
数码管
显示
的
2021-12-15
2681
如何让
数码管
循环
显示
0-9
?
2021-10-11
4302
怎样用
定时器
去
设计一个间隔1s
从
100减到
0
的计数器
2021-08-23
1465
单片机
定时器
怎么实现
数码管
显示
从
0
到F静态?
2021-11-03
3861
P
0
端口是怎样驱动共阳极
数码管
循环
显示
0-9
的
2021-10-19
3711
单片机
定时器
,编译后
数码管
不
显示
2014-02-14
6808
怎样利用
定时器
T
0
、
数码管
模块和独立按键
去
设计一个秒表
呢
2022-01-21
1086
用哪些硬件可以使
数码管
1到
9
显示
,最后停在
0
,按下开关,继续
从
1到
9
循环
2019-04-29
3397
如何对基于Arduino的分立式
数码管
循环
显示
0
~
9
设计进行仿真
2021-09-24
2127
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分