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

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

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

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

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

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
30
关闭 站长推荐上一条 /3 下一条