查看: 7114|回复: 6

[讨论] 逐飞LPC55S69 IOT开发板之MCUXpresso 配置utick的问题

[复制链接]
  • TA的每日心情

    2025-5-29 09:38
  • 签到天数: 632 天

    连续签到: 1 天

    [LV.9]以坛为家II

    94

    主题

    1639

    帖子

    2

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    4470

    热心会员

    最后登录
    2025-6-10
    发表于 2020-12-12 20:33:27 | 显示全部楼层 |阅读模式
    本帖最后由 胤幻1988 于 2020-12-12 20:35 编辑

    今天用MCUXpresso 的toolconfig配置utick,这么简单的定时器,第一次竟然不成功。
    我第一次的配置:
    utick0.png
    然后查看代码:
    1. UTICK_SetTick(UTICK0_PERIPHERAL, UTICK0_MODE, UTICK0_TICKS, NULL);
    复制代码
    UTICK0_MODE被设置成了只执行一次。再次进入查看:
    1. void UTICK_SetTick(UTICK_Type *base, utick_mode_t mode, uint32_t count, utick_callback_t cb)
    2. {
    3.     uint32_t instance;

    4.     /* Get instance from peripheral base address. */
    5.     instance = UTICK_GetInstance(base);

    6.     /* Save the handle in global variables to support the double weak mechanism. */
    7.     s_utickHandle[instance] = cb;
    8. #if ((defined(FSL_FEATURE_SOC_SYSCON_COUNT) && (FSL_FEATURE_SOC_SYSCON_COUNT > 0)) && \
    9.      !(defined(FSL_FEATURE_SYSCON_STARTER_DISCONTINUOUS) && FSL_FEATURE_SYSCON_STARTER_DISCONTINUOUS))
    10.     EnableDeepSleepIRQ(s_utickIRQ[instance]);
    11. #else
    12.     (void)EnableIRQ(s_utickIRQ[instance]);
    13. #endif /* FSL_FEATURE_SOC_SYSCON_COUNT && !FSL_FEATURE_SYSCON_STARTER_DISCONTINUOUS */

    14. }
    复制代码
    UTICK_CTRL_REPEAT(mode):
    1. <blockquote>typedef enum _utick_mode
    复制代码
    完全正常,可是用utick做的一个延时函数就是出不来。
    查看相关的参考手册,也没看出个所以然:
    M1.png
    理论上只要赋给CTL的delay值不为0,它就会开始工作的。但我经过调试看,我的延时代码,定时器好像压根没执行,直接就跳过了。
    延时代码:
    1. void delay_us(uint32_t delay)
    2. {

    3.         if(delay > 2000000000)
    4.                 delay = 2000000000;
    5.         else
    6.                 delay= delay*1;
    7.         UTICK_SetTick(UTICK0_PERIPHERAL, UTICK0_MODE, delay, NULL);
    8.         //如果未减值到0,并触发标志
    9.         while(!(UTICK_GetStatusFlags(UTICK0_PERIPHERAL) & UTICK_STAT_INTR_MASK)){}
    10.         UTICK_ClearStatusFlags(UTICK0_PERIPHERAL);
    11. }

    12. void delay_ms(uint32_t delay)
    13. {
    14.         while(delay--)
    15.         {
    16.                 delay_us(1000);//1ms
    17.         }
    18. }
    复制代码

    main函数里面一个LED延时闪烁,但是现象就是一直亮。通过调试发现,程序并没有死在哪个循环里面。在延时函数查询utick的标志那句while判断一直是跳过的。然后其实LED引脚已经翻转了,但是就是速度太快,根本看不出灭。这就奇怪了,就这几句的配置还能出问题。打开MDK在上面配置相同的代码,却能正常通过,LED正常闪烁。代码一一比较过,发现确实没什么不同。
    尝试重新配置一下,如下,把触发模式改成repeat重复触发模式:
    T10jj-OK.png
    然后再编译,却能正常闪烁了。真是很奇怪。在初始化中,DELAY值均为0,都没有开定时器。REPEAT模式,跟ONCE的区别:
    1. REPEAT:
    复制代码

    真的好奇怪,不知道哪里出问题。是不是IDE的一些本身的预处理的还是什么的有点问题?也不敢肯定。
    MDK用的人多,坑也踩的差不多了。以后看来还是用MDK做主要的IDE吧。
    哎...今天够累的,签到来了~
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-12-2 08:40
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    103

    主题

    869

    帖子

    7

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    4353
    最后登录
    2025-8-21
    发表于 2020-12-12 23:44:58 | 显示全部楼层
    手上没带板子,工作日我尝试下
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-8-8 16:43
  • 签到天数: 1504 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    97

    主题

    4693

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    10101
    最后登录
    2025-9-4
    发表于 2020-12-14 09:30:55 | 显示全部楼层
    关注一下后续。
    现在由于一些原因,我也在使用MCUxpresso。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2025-5-29 09:38
  • 签到天数: 632 天

    连续签到: 1 天

    [LV.9]以坛为家II

    94

    主题

    1639

    帖子

    2

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    4470

    热心会员

    最后登录
    2025-6-10
     楼主| 发表于 2020-12-14 09:53:06 | 显示全部楼层
    不管了,我曲线救国实现了。它的中断还是能够正常的。但是坑的是utick的1M(1us)工作频率,中断最小500K(2us).还用不了1us,也是感觉蛋疼。我配制成2us一次中断的REPEAT模式。然后在中断里面加上一个时间变量计算,就像以前用systick一样。将就先用着吧。
    1. void delay_ms(uint32_t delay)
    2. {
    3.         if(delay > 2000000)
    4.                 delay = 2000000*1000;
    5.         else
    6.                 delay= delay*1000;

    7.         //这里设定的为2us触发一次
    8.         delay=delay/2;
    9.         if(delay<0)  delay=1;
    10.     //开始计时
    11.         delay_count=0;
    12.         while(delay_count<delay){};

    13.         //UTICK_ClearStatusFlags(UTICK0_PERIPHERAL);
    14.         //UTICK_SetTick(UTICK0_PERIPHERAL, UTICK0_MODE, delay, NULL);
    15.         //如果未减值到0,并触发标志
    16.         //while(!(UTICK_GetStatusFlags(UTICK0_PERIPHERAL) & UTICK_STAT_INTR_MASK)){}
    17.         //UTICK_ClearStatusFlags(UTICK0_PERIPHERAL);
    18. }

    19. //utick的中断回调函数
    20. void UTICK0_Callback(void)
    21. {
    22.         delay_count++;
    23.         /*
    24.         if(delay_count==300000)
    25.         {
    26.                 delay_count=0;
    27.             LED_RED_TOG();
    28.             PRINTF("hhhhhh\r\n");
    29.         }*/
    30. }
    复制代码



    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-12-2 08:40
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    103

    主题

    869

    帖子

    7

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    4353
    最后登录
    2025-8-21
    发表于 2020-12-14 11:31:41 | 显示全部楼层
    可以使可以,我这边有点小问题

    UTICK0_TICK_PERIOD 这个值不会update,我提交个jira让他们update下
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2025-5-29 09:38
  • 签到天数: 632 天

    连续签到: 1 天

    [LV.9]以坛为家II

    94

    主题

    1639

    帖子

    2

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    4470

    热心会员

    最后登录
    2025-6-10
     楼主| 发表于 2020-12-14 14:24:47 | 显示全部楼层
    mgn 发表于 2020-12-14 11:31
    可以使可以,我这边有点小问题

    UTICK0_TICK_PERIOD 这个值不会update,我提交个jira让他们update下 ...

    好的。兄弟。还有在配置串口那会,它程序里面预编译的宏一直是:SDK_DEBUGCONSOLE=0,
    然后你用toolconfig配成SDK_DEBUGCONSOLE后,编译会报错。要到预编译的里面自己改成1。这个做不到关联么?还是在新建工程选择printf的时候,选项没有起作用(新建工程那会,我已经选择SDK_DEBUGCONSOLE了,结果预编译里面还是0)?

    SS1.png


    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2025-5-29 09:38
  • 签到天数: 632 天

    连续签到: 1 天

    [LV.9]以坛为家II

    94

    主题

    1639

    帖子

    2

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    4470

    热心会员

    最后登录
    2025-6-10
     楼主| 发表于 2020-12-19 10:25:39 | 显示全部楼层
    mgn 发表于 2020-12-14 11:31
    可以使可以,我这边有点小问题

    UTICK0_TICK_PERIOD 这个值不会update,我提交个jira让他们update下 ...

    解决了没??
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-6 05:41 , Processed in 0.096939 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表