查看: 5300|回复: 3

[求助] 关于LPC54608的sdk里面can中断的callback用法

[复制链接]
  • TA的每日心情
    慵懒
    2016-11-22 09:32
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    3

    主题

    29

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    335
    最后登录
    2023-5-6
    发表于 2017-3-10 11:01:46 | 显示全部楼层 |阅读模式
    1. static void mcan_callback(CAN_Type *base, mcan_handle_t *handle, status_t status, uint32_t result, void *userData)
    2. {
    3.     switch (status)
    4.     {
    5.         case kStatus_MCAN_RxFifo0Idle:
    6.             {
    7.                 rxComplete = true;
    8.             }
    9.             break;

    10.         case kStatus_MCAN_TxIdle:
    11.             {
    12.                 txComplete = true;
    13.             }
    14.             break;

    15.         default:
    16.             break;
    17.     }
    18. }
    复制代码
    1. mcan_handle_t mcanHandle;
    2. MCAN_TransferCreateHandle(EXAMPLE_MCAN, &mcanHandle, mcan_callback, NULL);
    复制代码
    1.     /* RX fifo0 config. */
    2.     rxFifo0.address = RX_FIFO0_OFS;
    3.     rxFifo0.elementSize = 1U;
    4.     rxFifo0.watermark = 0;
    5.     rxFifo0.opmode = kMCAN_FifoBlocking;
    6.     rxFifo0.datafieldSize = kMCAN_8ByteDatafield;
    7.     MCAN_SetRxFifo0Config(EXAMPLE_MCAN, &rxFifo0);

    8.     /* TX buffer config. */
    9.     txBuffer.address = TX_BUFFER_OFS;
    10.     txBuffer.dedicatedSize = 1U;
    11.     txBuffer.fqSize = 0;
    12.     txBuffer.datafieldSize = kMCAN_8ByteDatafield;
    13.     MCAN_SetTxBufferConfig(EXAMPLE_MCAN, &txBuffer);
    复制代码

    例程里有么一个函数。具体用法不是很了解。上面第一个应该是中断的服务函数。下面是注册中断函数。不知道我的理解对不对。还有就是elementSize的大小,1表示的时间大小是1个byte还是?之前没接触过类似的,不是特别了解。另外还有dedicatedSize的大小1表示是多大?
    因为之前是用16位单片机,没有这种sram里定义的fifo或者buff。中断触发之后需要及时把数据拷走。现在这个中断触发以后是不是可以从buff或者FIFO里慢慢提了?大家有了解的请帮帮忙。。金币不多。。意思意思
    我知道答案 目前已有3人回答
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-11-22 09:32
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    3

    主题

    29

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    335
    最后登录
    2023-5-6
     楼主| 发表于 2017-3-10 11:03:55 | 显示全部楼层
    1.     #define MSG_RAM_BASE 0x20010000U
    2. #define STD_FILTER_OFS 0x0
    3. #define RX_FIFO0_OFS 0x10U
    4. #define TX_BUFFER_OFS 0x20U

    5. MCAN_SetMsgRAMBase(EXAMPLE_MCAN, MSG_RAM_BASE);
    6.     uint32_t *p=(uint32_t *)(MSG_RAM_BASE);
    7.     memset(p, 0, TX_BUFFER_OFS + 0x10U);
    复制代码
    哦,对还有这个 setmsgram这个。TX_BUFFER_OFS + 0x10U。里面的10U是怎么确定的?是说的RX_FIFO0_OFS吗?

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    723

    主题

    6382

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    25480
    最后登录
    2025-9-9
    发表于 2017-3-10 14:12:59 | 显示全部楼层

    回帖奖励 +20 NXP金币

    建议楼主先看看一下SDK API reference manual LPC5460x文档,里面有函数和参数结构的介绍
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-11-22 09:32
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    3

    主题

    29

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    335
    最后登录
    2023-5-6
     楼主| 发表于 2017-3-10 15:34:04 | 显示全部楼层
    小恩GG 发表于 2017-3-10 14:12
    建议楼主先看看一下SDK API reference manual LPC5460x文档,里面有函数和参数结构的介绍 ...

    那个啥,看了,没太看懂
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-9-9 21:09 , Processed in 0.095047 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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