原创 【不用开发板学习STM32】7段数码管0~9定时显示(文末获取代码及工程文件)

2020-12-17 09:11 4285 31 2 分类: MCU/ 嵌入式 文集: 不用开发板学STM32系列
本实验是通过7个IO口控制一个共阳7段数码管,分别从0~9依次显示。时间间隔200ms刷新一次。系统时钟源是内部8MHz晶振,具体原因上一期已经讲述过了,时钟倍频位40MHz,使用了TIM2定时器,数码管刷新在TIM2中断函数中完成。同时利用systick来计时,控制一个LED灯间歇闪烁。工程师如果对STM32F10x系列怎么使用内部时钟有疑问可以参考这里的代码,都是在实际开发板上测试过,和用Proteus仿真结果是一致的。
TIM2初始化,这里设置是200ms进一次中断,系统时钟是40MHz,并且配置好TIM2的中断,代码如下:
void bsp_InitTIM2(void)
  • {
  • TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
  • uint32_t usPeriod;
  • /* 开启TIM2的时钟 */
  • RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
  • usPeriod = 2000; //重装载数值 200ms
  • /* Time base configuration */
  • TIM_TimeBaseStructure.TIM_Period = usPeriod;
  • TIM_TimeBaseStructure.TIM_Prescaler = 3999; //设置分频系数
  • TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  • TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  • TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
  • //开启TIM2中断
  • TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE );
  • /* TIMx enable */
  • TIM_Cmd(TIM2, ENABLE);
  • {
  • /* 配置定时器中断 */
  • NVIC_InitTypeDef NVIC_InitStructure;
  • NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
  • NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 4;
  • NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  • NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  • NVIC_Init(&NVIC_InitStructure);
  • }
  • }
  • 复制代码
    代码及工程下载链接!!https://t.1yb.co/axri

    作者: Jack陈, 来源:面包板社区

    链接: https://mbb.eet-china.com/blog/uid-me-1468086.html

    版权声明:本文为博主原创,未经本人允许,禁止转载!

    PARTNER CONTENT

    文章评论0条评论)

    登录后参与讨论
    我要评论
    0
    31
    关闭 站长推荐上一条 /3 下一条