This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RTOS/CC2538:项目所需的最小文件

Guru**** 2587365 points
Other Parts Discussed in Thread: Z-STACK

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/677157/rtos-cc2538-minimum-files-required-for-a-project

器件型号:CC2538
Thread 中讨论的其他器件: Z-stack

工具/软件:TI-RTOS

大家好、

我想知道哪些文件对于 ZMesh 中的 ZigBee 网状网络功能绝对是必需的。 由于项目中有许多特定于电路板的(cc2538DK)文件和定义、因此我想知道 GenericApp 项目中的哪些文件仅与电路板相关(键、LED、LCD 等)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    hal 文件夹下的文件主要与电路板相关。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、感谢您的快速回复。 您能告诉我哪些文件很重要吗? 就像我认为 hal_sys_ctrl.c 或 hal_mac_cfg、或者如果可以告诉我一个描述这些文件功能的引用。
    实际上、我有一个定制板。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我想在端口 A 的引脚5、6和7上使用 PWM
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们通常保留整个文件夹、我建议您这样做。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    e2e.ti.com/.../471247 我已经按照本指南介绍了多个 PWM 发生器、但我的 PWM 似乎不工作我正在使用 PORT_A_base 引脚5、6和7您能告诉我在使用 zMesh 时可能会遇到什么问题
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否在未进行任何修改的情况下尝试我在示例中发布的原始示例、并确保它首先起作用?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我无法测试原始示例、因为我的电路板引脚排列不同
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    第一次调用是 init_pwm_pins、之后在 init_application 函数中、我在 Timerinit 之后设置 chanel 任务。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Mansoor、

    我已经确认了黄正明的例子是可行的。 您应该能够轻松修改所需引脚的 hal_board_cfg.h PWM_LED_[base、1-4]定义。

    此致、
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Ryan,

    您能否确认、使用此示例、我们可以使用单个计时器设置不同的占空比?

    而且,您可以向我提供完整项目的链接。上一个链接仅提供3个文件。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在 timer.c halTimer1SetChannelDuty (uint8_t channel、uint16 promil)中有一个检查(如果通道= 0)、我认为此示例中存在问题、您可以确认。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    hal_dimer.c 中有注释

    注意:以下映射在逻辑计时器之间完成
    HAL_TIMER.H 和物理硬件计时器中定义的名称。

    HAL_TIMER_0 -> HW 计时器3 (8位)
    HAL_TIMER_2 -> HW 计时器4 (8位)
    HAL_TIMER_3 -> HW 计时器1 (16位)

    注:定时器代码假定只使用一个通道、通道0
    计时器的频率。 目前不支持其他
    通道。

    注意:仅支持输出比较模式。 没有规定
    以支持输入捕捉模式。

    注意:不支持将计时器的输出映射到
    物理 I/O 引脚

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您应该下载/安装 Z-Stack Home 1.2.2a 并将我的文件以 ZIP 格式回复至 SampleLight 示例以进行构建和测试。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    void halTimer1SetChannelDuty (uint8通道、uint16 promill)

    if (通道=0)

    uint32 timeramatch =(PWM_PERIOD *(100 promill))/ 100;

    if (timerAMatch = PWM_PERIOD)

    分时器匹配--;


    //
    // PWM 计数器递减计数,从而根据计算实际匹配计数
    //占空比为:Period*(100-DubyCycle)/100
    //
    TimerMatchSet (GPTIMER0_BASE、GPTIMER_A、timerAMATCH);


    这是 zStackHome 1.2.2a 中的 halTimer1SetChannelDuty 函数如何在不同的引脚上设置不同的任务?

    @黄真
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经测试过您的代码,但它在每个引脚上生成相同的占空比:(
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否向我展示如何针对不同的占空比修改代码?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我使用了 HalTimerConfig (uint8 timerId、opmode、channel、channelMode、intEnable、cback) API、但我发现此 API 仍在开发中、因为只有返回0;在该函数中。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗨、大家好、我使用以下代码在3个不同引脚上成功生成了不同占空比的 PWM。
    我使用了两个 GPT GPT0 (A 和 B)和 GPT1 (仅 GPTA)以下是我的代码、以防任何人查看并遇到相同的问题。

    void initPWM (void)

    SysCtrlPeripheralEnable (SYS_CTRL_Periph_GPT0);
    SysCtrlPeripheralEnable (SYS_CTRL_Periph_GPT1);

    /* GPT0 Timer A 和 Timer B 的两个16位定时器,装载值为0x68,输出反相为真*/
    TimerConfigure (GPTIMER0_BASE、(GPTIMER_CFG_SPLIT_PAIR | GPTIMER_CFG_A_PWM | GPTIMER_CFG_B_PWM));
    TimerLoadSet (GPTIMER0_BASE、GPTIMER_Both、0x68);
    TimerControlLevel (GPTIMER0_BASE、GPTIMER_Both、TRUE);

    TimerConfigure (GPTIMER1_BASE、(GPTIMER_CFG_SPLIT_PAIR | GPTIMER_CFG_A_PWM | GPTIMER_CFG_B_PWM));
    TimerLoadSet (GPTIMER1_BASE、GPTIMER_Both、0x68);
    TimerControlLevel (GPTIMER1_BASE、GPTIMER_Both、TRUE);


    /*将 GPIO 配置为输出并设置为低电平*/
    GPIOPinTypeGPIOOutput (GPIO_A_base、GPIO_PIN_5);
    GPIOPinWrite (GPIO_A_base、GPIO_PIN_5、0);


    GPIOPinTypeGPIOOutput (GPIO_A_base、GPIO_PIN_6);
    GPIOPinWrite (GPIO_A_base、GPIO_PIN_6、0);

    GPIOPinTypeGPIOOutput (GPIO_A_base、GPIO_PIN_7);
    GPIOPinWrite (GPIO_A_base、GPIO_PIN_7、0);


    /*将 GPIO 功能配置为由外设控制和驱动的定时器*/
    IOCPinConfigPeriphOutput (GPIO_A_base、GPIO_PIN_7、IOC_MUX_OUT_SEL_GPT0_ICP1);
    GPIOPinTypeTimer( GPIO_A_base、GPIO_PIN_7 );
    IOCPadConfigSet (GPIO_A_base、GPIO_PIN_7、IOC_OVERRIDE_OE);

    IOCPinConfigPeriphOutput (GPIO_A_base、GPIO_PIN_6、IOC_MUX_OUT_SEL_GPT0_ICP2);
    GPIOPinTypeTimer (GPIO_A_base、GPIO_PIN_6);
    IOCPadConfigSet (GPIO_A_base、GPIO_PIN_6、IOC_OVERRIDE_OE);

    IOCPinConfigPeriphOutput (GPIO_A_base、GPIO_PIN_5、IOC_MUX_OUT_SEL_GPT1_ICP1);
    GPIOPinTypeTimer (GPIO_A_base、GPIO_PIN_5);
    IOCPadConfigSet (GPIO_A_base、GPIO_PIN_5、IOC_OVERRIDE_OE);


    /*启用定时器并将初始占空比设置为零*/
    TimerEnable (GPTIMER0_BASE、GPTIMER_A);
    TimerEnable (GPTIMER0_BASE、GPTIMER_B);
    TimerEnable (GPTIMER1_BASE、GPTIMER_A);

    TimerMatchSet (GPTIMER0_BASE、GPTIMER_A、0);
    TimerMatchSet (GPTIMER0_BASE、GPTIMER_B、0);
    TimerMatchSet (GPTIMER1_BASE、GPTIMER_A、0);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢你的支持