[技术相关] 【SWDM-QFP100-34SVEA3测评】+普通定时器1ms、点灯

[复制链接]
 楼主| freeelectron 发表于 2023-5-5 11:27 | 显示全部楼层 |阅读模式
<
本帖最后由 freeelectron 于 2023-5-5 11:29 编辑

#申请原创#
本文主要实现以下功能:

最简单的方式是用的阻塞方式点灯,即就是死等,在等待期间mcu干不了其他事情(中断除外),这种方式不太友好,本文使用非阻塞方式点灯;

普通定时器1ms一次中断,为整个系统应用层提供时钟。

1、定时器4配置为1ms中断一次
  1. static uint32_t SystemTick=0;

  2. void TimerInit(void)
  3. {
  4.         TIMR_Init(TIMR4, TIMR_MODE_TIMER, CyclesPerUs, 1000, 1);        //每1ms秒钟触发一次中断 //1000 000
  5.         TIMR_Start(TIMR4);
  6. }


  7. void TIMR4_Handler(void)
  8. {
  9.         TIMR_INTClr(TIMR4);
  10.        
  11.         SystemTick++;
  12. }


  13. uint32_t GetSystemTick(void)
  14. {
  15.         return SystemTick;
  16. }




2、非阻塞点灯,500ms闪烁一次
  1. void LedInit(void)
  2. {
  3.         GPIO_Init(GPIOA, PIN5, 1, 0, 0, 0);                        //输出,接LED
  4. }


  5. void SystemRun(void)
  6. {
  7.         static uint32_t curtick=0;
  8.        
  9.         if(GetSystemTick()-curtick>=500)
  10.         {
  11.                 GPIO_InvBit(GPIOA, PIN5);        //反转LED亮灭状态
  12.                
  13.                 curtick=GetSystemTick();
  14.         }
  15. }

3、焊接J6、J19,将LED和PA5使用杜邦线连接起来
1.jpg


最后,上个gif,看看现象:
blink.gif







blink.gif
elsaflower 发表于 2023-5-10 20:52 | 显示全部楼层
有多少个定时器呢?              
olivem55arlowe 发表于 2023-5-10 21:37 | 显示全部楼层
定时器中断。              
mollylawrence 发表于 2023-5-10 21:49 | 显示全部楼层
可以实现us的计时功能吗              

评论

可以  发表于 2023-5-11 09:12
iyoum 发表于 2023-5-10 22:19 | 显示全部楼层
使用系统内部的计时时钟。              
adolphcocker 发表于 2023-5-11 18:49 | 显示全部楼层
这个应该有systick吧。              
rosemoore 发表于 2023-5-11 19:16 | 显示全部楼层
可以使用时间段判断。              
hearstnorman323 发表于 2023-5-11 20:03 | 显示全部楼层
最大的运行时间是怎么计算呢?              
averyleigh 发表于 2023-5-11 20:13 | 显示全部楼层
如果数据溢出怎么解决呢              
 楼主| freeelectron 发表于 2023-5-12 10:55 | 显示全部楼层
averyleigh 发表于 2023-5-11 20:13
如果数据溢出怎么解决呢

按32位无符号数据,能表示的最大数据计算,持续运行49.7天才会溢出
 楼主| freeelectron 发表于 2023-5-12 11:07 | 显示全部楼层
adolphcocker 发表于 2023-5-11 18:49
这个应该有systick吧。

有的,一般用systick做延时
tpgf 发表于 2023-6-2 14:02 | 显示全部楼层
请问一下 什么是阻塞方式点灯?在什么情况下用到这种方式进行点灯呢
华芯微特FAE 发表于 2023-6-2 14:41 | 显示全部楼层
tpgf 发表于 2023-6-2 14:02
请问一下 什么是阻塞方式点灯?在什么情况下用到这种方式进行点灯呢

通俗讲就是死等;如果程序逻辑简单可以用,不能耽搁其他应用。
eg:

delay();//死等
led_flp;
nawu 发表于 2023-6-2 15:15 | 显示全部楼层
tpgf 发表于 2023-6-2 14:02
请问一下 什么是阻塞方式点灯?在什么情况下用到这种方式进行点灯呢

就是用等待的方式进行点灯,我个人感觉有点浪费资源
华芯微特FAE 发表于 2023-6-2 15:22 | 显示全部楼层
nawu 发表于 2023-6-2 15:15
就是用等待的方式进行点灯,我个人感觉有点浪费资源

是的呢,主题讲的是用定时器中断,然后再中断做了一个tick,
aoyi 发表于 2023-6-2 15:33 | 显示全部楼层
华芯微特FAE 发表于 2023-6-2 15:22
是的呢,主题讲的是用定时器中断,然后再中断做了一个tick,

既然有这种方式进行操作 那么肯定有其存在的必要  一般我们在什么情况下会使用这种方式呢
zljiu 发表于 2023-6-2 16:03 | 显示全部楼层
其实使用什么时钟都是可以实现的 毕竟功能还是非常简单的
gwsan 发表于 2023-6-2 16:41 | 显示全部楼层
这种方式比较适合新手熟悉定时器的操作
caigang13 发表于 2023-6-2 16:49 来自手机 | 显示全部楼层
点灯blinker,花式点灯。
ayb_ice 发表于 2023-6-2 17:09 | 显示全部楼层
averyleigh 发表于 2023-5-11 20:13
如果数据溢出怎么解决呢

溢出也不会有问题,相当于自动借了一位
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:stm32/LoRa物联网:304350312

65

主题

785

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部