打印
[技术相关]

【SWDM-QFP100-34SVEA3测评】+普通定时器1ms、点灯

[复制链接]
1214|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 freeelectron 于 2023-5-5 11:29 编辑

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

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

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

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

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


void TIMR4_Handler(void)
{
        TIMR_INTClr(TIMR4);
       
        SystemTick++;
}


uint32_t GetSystemTick(void)
{
        return SystemTick;
}




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


void SystemRun(void)
{
        static uint32_t curtick=0;
       
        if(GetSystemTick()-curtick>=500)
        {
                GPIO_InvBit(GPIOA, PIN5);        //反转LED亮灭状态
               
                curtick=GetSystemTick();
        }
}

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



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








blink.gif (8.85 MB )

blink.gif

使用特权

评论回复

相关帖子

沙发
elsaflower| | 2023-5-10 20:52 | 只看该作者
有多少个定时器呢?              

使用特权

评论回复
板凳
olivem55arlowe| | 2023-5-10 21:37 | 只看该作者
定时器中断。              

使用特权

评论回复
地板
mollylawrence| | 2023-5-10 21:49 | 只看该作者
可以实现us的计时功能吗              

使用特权

评论回复
评论
freeelectron 2023-5-11 09:12 回复TA
可以 
5
iyoum| | 2023-5-10 22:19 | 只看该作者
使用系统内部的计时时钟。              

使用特权

评论回复
6
adolphcocker| | 2023-5-11 18:49 | 只看该作者
这个应该有systick吧。              

使用特权

评论回复
7
rosemoore| | 2023-5-11 19:16 | 只看该作者
可以使用时间段判断。              

使用特权

评论回复
8
hearstnorman323| | 2023-5-11 20:03 | 只看该作者
最大的运行时间是怎么计算呢?              

使用特权

评论回复
9
averyleigh| | 2023-5-11 20:13 | 只看该作者
如果数据溢出怎么解决呢              

使用特权

评论回复
10
freeelectron|  楼主 | 2023-5-12 10:55 | 只看该作者
averyleigh 发表于 2023-5-11 20:13
如果数据溢出怎么解决呢

按32位无符号数据,能表示的最大数据计算,持续运行49.7天才会溢出

使用特权

评论回复
11
freeelectron|  楼主 | 2023-5-12 11:07 | 只看该作者
adolphcocker 发表于 2023-5-11 18:49
这个应该有systick吧。

有的,一般用systick做延时

使用特权

评论回复
12
tpgf| | 2023-6-2 14:02 | 只看该作者
请问一下 什么是阻塞方式点灯?在什么情况下用到这种方式进行点灯呢

使用特权

评论回复
13
华芯微特FAE| | 2023-6-2 14:41 | 只看该作者
tpgf 发表于 2023-6-2 14:02
请问一下 什么是阻塞方式点灯?在什么情况下用到这种方式进行点灯呢

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

delay();//死等
led_flp;

使用特权

评论回复
14
nawu| | 2023-6-2 15:15 | 只看该作者
tpgf 发表于 2023-6-2 14:02
请问一下 什么是阻塞方式点灯?在什么情况下用到这种方式进行点灯呢

就是用等待的方式进行点灯,我个人感觉有点浪费资源

使用特权

评论回复
15
华芯微特FAE| | 2023-6-2 15:22 | 只看该作者
nawu 发表于 2023-6-2 15:15
就是用等待的方式进行点灯,我个人感觉有点浪费资源

是的呢,主题讲的是用定时器中断,然后再中断做了一个tick,

使用特权

评论回复
16
aoyi| | 2023-6-2 15:33 | 只看该作者
华芯微特FAE 发表于 2023-6-2 15:22
是的呢,主题讲的是用定时器中断,然后再中断做了一个tick,

既然有这种方式进行操作 那么肯定有其存在的必要  一般我们在什么情况下会使用这种方式呢

使用特权

评论回复
17
zljiu| | 2023-6-2 16:03 | 只看该作者
其实使用什么时钟都是可以实现的 毕竟功能还是非常简单的

使用特权

评论回复
18
gwsan| | 2023-6-2 16:41 | 只看该作者
这种方式比较适合新手熟悉定时器的操作

使用特权

评论回复
19
caigang13| | 2023-6-2 16:49 | 只看该作者
点灯blinker,花式点灯。

使用特权

评论回复
20
ayb_ice| | 2023-6-2 17:09 | 只看该作者
averyleigh 发表于 2023-5-11 20:13
如果数据溢出怎么解决呢

溢出也不会有问题,相当于自动借了一位

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

65

主题

785

帖子

11

粉丝