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.

[参考译文] CC2650MODA:读取/更新寄存器会导致故障?

Guru**** 1456740 points
Other Parts Discussed in Thread: CC2650, CC1350
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1063486/cc2650moda-read-update-register-causes-fault

器件型号:CC2650MODA
Thread 中讨论的其他器件:CC2650CC1350

你好。 我不熟悉 TI 处理器、但我在 PIC 方面有很多经验。 我发现在该处理器上运行任何内容都非常具有挑战性。 非常希望有一些方向。 几年前、TI 似乎彻底摧毁了所有东西。 几乎所有与此处理器相关的链接都已断开。

我想使用 driverlib、现在对 RTOS 没有兴趣。

1) 1)我正在尝试获取一个空白项目、该项目将编译并将一些字符输出到 UART 端口。

新建 CCS 工程中的空白工程生成器已损坏、无法编译。 我最终从库中挖掘出各种示例、并将/inc 和/driverlib 文件夹复制到我的项目文件夹中、最后对其进行编译、但是、整个 TI 生态系统中没有什么看起来像 CC2650的干净/inc 和/driverlib 这样的东西。 我必须从传感器标签或其他开发板的示例中获取它们、这些示例假设您有开发板。 我不是。 它是安装在我自己的定制板上的处理器。

我按照数据表操作、似乎打开了 UART 端口、您可以使用以下命令:

UARTConfigSetExpClk (UART0_BASE、SysCtrlClockGet ()、115200、
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));

^^^此函数最终调用以下行:

HWREG (ui32Base + UART_O_LCRH)&=~(UART_LCRH_Fen);

当调用此行时,处理器会对 ResetISR()进行故障处理。 之前的行确实运行 HWREG (UART0_BASE + UART_O_CTL)= 0x00;

我在调试器中观察到这一点、每次执行一个步骤。 当它调用 UARTConfigSetExpClk 时、调试器无法在源代码中跟踪它-它表示源代码不可用、这是哑光的、因为编译器必须找到它来编译代码。

这是整个代码。

INT 计数= 0; 

int main (空)


HWREG (PRCM_BASE + PRCM_O_PDSTAT0)= 0x07;//为所有域加电
IOCPinTypeUart (UART0_BASE、IOID_unused、IOID_14、IOID_unused、IOID_unused);
PRCMPeripheralRunEnable (PRCM_Periph_UART0);
PRCMLoadSet();
UARTConfigSetExpClk (UART0_BASE、SysCtrlClockGet ()、115200、
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));

UARTEnable (UART0_BASE);
UARTFIFOEnable (UART0_BASE);

while (1){
count++;
UARTCharPutNonBlocking (UART0_BASE、COUNT);


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

    您好!

    您可以在 CC2650的 SDK 中使用 CC1350的软件参考示例。

    dev.ti.com/.../node

    尝试以下 UART 初始化代码:

        //
        // Enable the serial domain and wait for domain to be on
        //
        PRCMPowerDomainOn(PRCM_DOMAIN_SERIAL);
        while(!(PRCMPowerDomainStatus(PRCM_DOMAIN_SERIAL) == PRCM_DOMAIN_POWER_ON))
        { }
        //
        // Enable the UART clock
        //
        PRCMPeripheralRunEnable(PRCM_PERIPH_UART0);
        //
        // Apply clock settings and wait for them to take effect
        //
        PRCMLoadSet();
        while(!PRCMLoadGet())
        { }
        //
        // Disable UART function
        //
        UARTDisable(UART0_BASE);
        //
        // Disable all UART module interrupts
        //
        UARTIntDisable(UART0_BASE, UART_INT_OE | UART_INT_BE | UART_INT_PE |
                                   UART_INT_FE | UART_INT_RT | UART_INT_TX |
                                  UART_INT_RX | UART_INT_CTS);
        //
        // Map UART signals to the correct GPIO pins and configure them as
        // hardware controlled.
        //
        IOCPinTypeUart(UART0_BASE,EXAMPLE_PIN_UART_RXD,EXAMPLE_PIN_UART_TXD,
                       EXAMPLE_PIN_UART_CTS,EXAMPLE_PIN_UART_RTS);
    
        //
        // Configure the UART for 115,200, 8-N-1 operation.
        // This function uses SysCtrlClockGet() to get the system clock
        // frequency. This could be also be a variable or hard coded value
        // instead of a function call.
        //
        UARTConfigSetExpClk(UART0_BASE, 48000000, 115200,
                            (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
                             UART_CONFIG_PAR_NONE));
        //
        // Enable UART
        //
        UARTEnable(UART0_BASE);
     
        //
        // Put a character to show start of example.  This will display on the
        // terminal.
        //
        UARTCharPut(UART0_BASE, '!');
         UARTCharPut(UART0_BASE, '\n');

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

    感谢 FI。

    这是我所缺少的。 这是缺失的、或者我在 DS 的 UART 部分错过了它。 再次感谢。

    PRCMPowerDomainOn(PRCM_DOMAIN_SERIAL);
        while(!(PRCMPowerDomainStatus(PRCM_DOMAIN_SERIAL) == PRCM_DOMAIN_POWER_ON))
        { }