请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:LAUNCHXL-F28379D 主题中讨论的其他器件: C2000WARE
大家好! 我是 C2000和一般微控制器的新手。 我尝试从 C2000ware 中学习几个示例、但我被困在 sci_ex3_echoback 示例中(在 driverlib/f2837xd/examples/cpu1/下)。 我已经阅读过几篇文章、发现 在本示例中、LAUNCHXL-F28379D 的 GPIO 引脚为43/42、而不是28/29。 我在终端中得到的结果如下:
这似乎是一个波特率问题。 我的终端配置为9600波特、8位数据、1个停止位、无奇偶校验、如示例所示。 Launchpad 可通过开箱即用示例正常工作。 我的代码是
// //包含的文件 // #include "driverlib.h" #include "device.h" // 定义 // 定义自动波特以使用自动波特锁定功能 //#define autobaud // ////全局 // uint16_t loopCounter = 0; // Main // void main (void) {void uint16_t receivedChar; unsigned char *msg; // //配置 PLL、禁用 WD、启用外设时钟。 // device_init(); // //禁用引脚锁定并启用内部上拉。 // DEVICE_initGPIO(); // // GPIO28是 SCI Rx 引脚。 // GPIO_setMasterCore (43、GPIO_CORE_CPU1); GPIO_setPinConfig (GPIO_43_SCIRXDA); GPIO_setDirectionMode (43、GPIO_DIR_MODE_IN); GPIO_setPadConfig (43、GPIO_PIN_TYPE_STD); GPIO_setQualificationMode (43、GPIO_QUAL_异 步); // // GPIO29是 SCI Tx 引脚。 // GPIO_setMasterCore (42、GPIO_CORE_CPU1); GPIO_setPinConfig (GPIO_42_SCITXDA); GPIO_setDirectionMode (42、GPIO_DIR_MODE_OUT); GPIO_setPadConfig (42、GPIO_PIN_TYPE_STD); GPIO_setQualificationMode (42、GPIO_QUAL_异 步); // //初始化中断控制器和矢量表。 // interrupt_initModule(); interrupt_initVectorTable(); // //初始化 SCIA 及其 FIFO。 // SCI_performSoftwareReset (SCIA_BASE); // //为回声配置 SCIA。 // SCI_setConfig (SCIA_BASE、DEVICE_LSPCLK_FREQ、9600、(SCI_CONFIG_WLEN_8 | SCI_CONFIG_STOP_ONE | SCI_CONFIG_PAR_NONE)); SCI_resetChannels (SCIA_BASE); SCI_resetRxFIFO (SCIA_BASE); SCI_resetTxFIFO (SCIA_BASE); SCI_clearInterruptStatus (SCIA_BASE、SCI_INT_TXFF | SCI_INT_RXFF); SCI_enableFIFO (SCIA_BASE); SCI_enableModule (SCIA_BASE); SCI_performSoftwareReset (SCIA_BASE); #ifdef 自动波特率 // //执行自动波特率锁定。 // SCI 要求用'A'或'A'来锁定波特率。 // SCI_lockAutobaud (SCIA_BASE); #endif // //发送起始消息。 // MSG ="\r\n\n\nHello World!\0"; SCI_writeCharArray (SCIA_BASE、(uint16_t*) msg、17); MSG ="\r\n 您将输入一个字符、DSP 将回显它!\n\n"; SCI_writeCharArray (SCIA_BASE、(uint16_t*) msg、62); for (;;) { MSG ="\r\n 输入字符:\0"; sci_writeCharArray (SCIA_BASE、(uint16_t*) msg、22); // //从 FIFO 读取字符。 // receivedChar = SCI_readCharBlockingFIFO (SCIA_BASE); // //回显字符。 // MSG ="您已发送:\0"; SCI_writeCharArray (SCIA_BASE、(uint16_t*) msg、13); SCI_writeCharBlockingFIFO (SCIA_BASE、receivedChar); // //递增循环计数变量。 // loopCounter++; } } // //文件结束 //
void SCI_setConfig (uint32_t base、uint32_t lspclkHz、uint32_t baud、uint32_t config) { uint32_t 分频器; // //检查参数。 //所需的波特率是否大于支持的最大速率? // assert (SCI_isBaseValid (base)); assert (baud!= 0U); assert (((baud * 16U)<= lspclkHz); // //停止 SCI。 // SCI_disableModule (base); // //计算波特率分频器。 // 分频器=((lspclkHz/(波特* 8U))- 1U); // //设置波特率。 // HWREGH (base + SCI_O_HBAUD)=(分频器和0xFF00U)>> 8U; //HWREGH (基址+ SCI_O_HBAUD)= 0x0002; HWREGH (base + SCI_O_LBAUD)=分频器和0x00FFU; //HWREGH (基址+ SCI_O_LBAUD)= 0x0090; // //设置奇偶校验、数据长度和停止位数。 // HWREGH (base + SCI_O_CCR)=((HWREGH (base + SCI_O_CCR)& ~(SCI_CONFIG_PAR_MASK | SCI_CONFIG_STOP_MASK | SCI_CONFIG_WLEN_MASK)| CONFIG); // //启动 SCI。 // SCI_enableModule (base); }
你认为这可能是什么? 我尝试过几种波特率、但它们都不起作用。
提前感谢!!
Tony
