当前位置:   article > 正文

九,stm32—系统定时器延时闪烁灯_stm32系统定时器控制led灯闪烁

stm32系统定时器控制led灯闪烁
概述:配置系统定时器实现延时闪烁开发板上的led2灯

PA1引脚连接led灯2,给PA1一个低电平,led2灯就会亮

SysTick寄存器介绍

编程要点

1)设置重装载寄存器的值。

2)清除当前数值寄存器的值。

3)配置控制与状态寄存器。

硬件:
1.stm32f10xc8t6开发板
2.type c数据线

源代码:
main.c
  1. #include "stm32f10x.h"
  2. #include "main.h"
  3. #include "led.h"
  4. #include "SysTick.h"
  5. int main()
  6. {
  7. LED_Init();
  8. GPIO_SetBits(GPIOA , GPIO_Pin_1);
  9. while(1)
  10.     {
  11.     GPIO_ResetBits(GPIOA , GPIO_Pin_1);
  12. ms_delay(500);
  13. GPIO_SetBits(GPIOA , GPIO_Pin_1);
  14. ms_delay(500);
  15.   }
  16.  
  17. }
main.h
  1. #include "stm32f10x.h"
  2. void delay(uint16_t time);
led.c
  1. #include "led.h"
  2. #include "stm32f10x.h"
  3. void LED_Init(void){
  4. GPIO_InitTypeDef led_init;
  5. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  6. led_init.GPIO_Mode = GPIO_Mode_Out_PP;
  7. led_init.GPIO_Pin = GPIO_Pin_1;
  8. led_init.GPIO_Speed = GPIO_Speed_10MHz;
  9. GPIO_Init(GPIOA,&led_init);
  10. }
led.h
  1. #include "stm32f10x.h"
  2. void LED_Init(void);
systick.c
  1. #include "SysTick.h"
  2. #include "stm32f10x.h"
  3. void ms_delay(uint32_t ms)
  4. {
  5. uint32_t i;
  6. SysTick_Config(72000);
  7. for(i=0;i<ms;i++)
  8. {
  9. while( !((SysTick->CTRL)&(1<<16)));
  10. }
  11. SysTick->CTRL &=~ SysTick_CTRL_ENABLE_Msk;
  12. }
  13. void us_delay(uint32_t us)
  14. {
  15. uint32_t i;
  16. SysTick_Config(72);
  17. for(i=0;i<us;i++)
  18. {
  19. while( !((SysTick->CTRL)&(1<<16)) );
  20. }
  21. SysTick->CTRL &=~ SysTick_CTRL_ENABLE_Msk;
  22. }
systick.h
  1. #include "stm32f10x.h"
  2. void ms_delay(uint32_t ms);
  3. void us_delay(uint32_t us);
效果展示:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/565695
推荐阅读
相关标签
  

闽ICP备14008679号