Thread 中讨论的其他器件: CCStudio
工具与软件:
大家好、团队成员:
我对 msp430fr2676微控制器还比较陌生。 我试图在 CC Studio 上查看微控制器的寄存器、却找不到 CAPTIOxCTL 寄存器(CapTouch Registers)进行调试。 能否请大家对此进行评论一下、我已经附上了可以在调试时看到的寄存器的屏幕截图。
我期待收到您的回复。
非常感谢
Criton
.
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.
工具与软件:
大家好、团队成员:
我对 msp430fr2676微控制器还比较陌生。 我试图在 CC Studio 上查看微控制器的寄存器、却找不到 CAPTIOxCTL 寄存器(CapTouch Registers)进行调试。 能否请大家对此进行评论一下、我已经附上了可以在调试时看到的寄存器的屏幕截图。
我期待收到您的回复。
非常感谢
Criton
.
尊敬的 Criton:
与所有其他 MSP430外设寄存器不同、CapTIvate 寄存器不会面向终端用户。 这样做的主要原因是外设的复杂性。 公开这些信息将允许篡改寄存器、这可能导致外设无法正常运行、并成为 TI 的支持问题。 因此、可以使用带 API 的 CapTIvate 库、让用户无需了解寄存器和位及其功能即可操控外设功能。
也就是说、您查找寄存器的具体原因是什么?
尊敬的 Criton:
如果您尚未发现 CapTIvate 技术指南、我建议您先在软件一章中了解库 API 的工作原理、然后在该章中的"操作方法"部分中了解如何读取传感器的简单示例。
CapTIvate 库作为您从 GUI 生成的每个 CapTIvate 工程的一部分提供。 它包含基本模块(本质上是 HAL 层)(用于操作 CapTIvate 寄存器的硬件抽象)和高级模块(具有传感器特定的处理功能)。
基础和高级处理函数位于项目的"CapTIve"路径中、位于 Base 和 Advanced 文件夹下、并编译到.lib (对于 CCS 项目)和.R43 (对于 IAR 项目)中。 这些模块没有可用的源代码。 除了.lib 模块之外、基本函数和高级函数也作为预编程函数存在于存储器的 MSP430的 ROM 部分中。 在器件的 ROM 部分中查找基本函数和高级函数可释放程序存储器(FRAM)中约12KB 的空间、从而为应用提供更多空间。
还有一个通信模块、该模块具有 MSP430向 GUI 传送传感器数据和控制信息所需的 UART 和 I2C 驱动程序。 这些函数利用 MSP430 driverlib 函数、"driverlib"文件夹下的每个项目中也包含这些函数。 driverlib 源代码可用、但通常您不需要它。 CapTIvate 库使用的 driverlib 函数调用会执行与 GUI 通信所需的所有操作、但您可以将它们重新用于在使用 GUI 完成后您的应用程序。 例如、当使用 CAPT-PGMR 时、可以重复使用 I2C 驱动程序函数与 PCB 上的 I2C 器件通信、或使用 UART 将数据发送到 PC 终端应用程序。
最后是应用层、它是您的代码所在的位置。 通常、您需要将所有传感器处理代码放入所谓的"回调"函数中。 回调函数在测量传感器后自动调用、因此无需担心何时运行传感器处理代码。 您可能需要在此处执行某些操作、例如在按下按钮时打开/关闭 LED。 可通过直接访问端口寄存器或使用其中一个 driverlib 函数来设置/清除 GPIO 引脚来实现此目的。
再次通读"软件"一章、您应该获得最需要的一切。
就是这样。
尊敬的 Dennis:
我是从设计指南开始的。 它生成了一个代码、我随后进行了修改、如下所示。 在调试时、我无法获得 UART 输出终端。 我使用 Tera Term、并使用 MSP 编程器将其连接到终端。 每当我按下传感器但不按下 UART 时、我使 LED 正常工作。 您能告诉我会出什么问题吗? 我已附上下面的代码
非常感谢、此致、
Criton
#include <msp430.h> // Generic MSP430 Device Include #include "CAPT_CommConfig.h" #include "UART.h" #include "UART_Definitions.h" #include "driverlib.h" // MSPWare Driver Library #include "captivate.h" // CapTIvate Touch Software Library #include "CAPT_App.h" // CapTIvate Application Code #include "CAPT_BSP.h" // CapTIvate EVM Board Support Package #include "intrinsics.h" #include "UART_Definitions.h" #include "stddef.h" // Assumes SMCLK = 2MHZ #define BAUD_19200 #ifdef BAUD_9600 // EUSCI runs @ 9600 #define UART_SAMPLING_MODE (EUSCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION) #define UART_PRESCALER (13) #define UART_FIRST_STAGE_MOD (0) #define UART_SECOND_STAGE_MOD (69) #elif defined BAUD_19200 // EUSCI runs @ 19.2K #define UART_SAMPLING_MODE (EUSCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION) #define UART_PRESCALER (6) #define UART_FIRST_STAGE_MOD (8) #define UART_SECOND_STAGE_MOD (17) #elif defined BAUD_38400 // EUSCI runs @ 38.4K #define UART_SAMPLING_MODE (EUSCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION) #define UART_PRESCALER (3) #define UART_FIRST_STAGE_MOD (4) #define UART_SECOND_STAGE_MOD (4) #elif defined BAUD_57600 // EUSCI runs @ 57.6K #define UART_SAMPLING_MODE (EUSCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION) #define UART_PRESCALER (2) #define UART_FIRST_STAGE_MOD (2) #define UART_SECOND_STAGE_MOD (187) #elif defined BAUD_115200 // EUSCI runs @ 115.2K #define UART_SAMPLING_MODE (EUSCI_A_UART_LOW_FREQUENCY_BAUDRATE_GENERATION) #define UART_PRESCALER (17) #define UART_FIRST_STAGE_MOD (0) #define UART_SECOND_STAGE_MOD (74) #elif defined BAUD_230400 // EUSCI runs @ 230.4K #define UART_SAMPLING_MODE (EUSCI_A_UART_LOW_FREQUENCY_BAUDRATE_GENERATION) #define UART_PRESCALER (8) #define UART_FIRST_STAGE_MOD (0) #define UART_SECOND_STAGE_MOD (214) #elif defined BAUD_250000 // EUSCI runs @ 250K #define UART_SAMPLING_MODE (EUSCI_A_UART_LOW_FREQUENCY_BAUDRATE_GENERATION) #define UART_PRESCALER (8) #define UART_FIRST_STAGE_MOD (0) #define UART_SECOND_STAGE_MOD (0) #else #warning "NO BAUD RATE SELECTED" #endif const tUARTPort g_myUartPort = { .pbReceiveCallback = NULL, .pbErrorCallback = 0, .peripheralParameters.selectClockSource = EUSCI_A_UART_CLOCKSOURCE_SMCLK, .peripheralParameters.clockPrescalar = UART_PRESCALER, .peripheralParameters.firstModReg = UART_FIRST_STAGE_MOD, .peripheralParameters.secondModReg = UART_SECOND_STAGE_MOD, .peripheralParameters.parity = EUSCI_A_UART_NO_PARITY, .peripheralParameters.msborLsbFirst = EUSCI_A_UART_LSB_FIRST, .peripheralParameters.numberofStopBits = EUSCI_A_UART_ONE_STOP_BIT, .peripheralParameters.uartMode = EUSCI_A_UART_MODE, .peripheralParameters.overSampling = UART_SAMPLING_MODE }; void main(void) { // // Initialize the MCU // BSP_configureMCU() sets up the device IO and clocking // The global interrupt enable is set to allow peripherals // to wake the MCU. // WDTCTL = WDTPW | WDTHOLD; P6OUT &= ~BIT0; // Clear P1.0 output latch for a defined power-on state P6DIR |= BIT0; // Set P1.0 to output direction BSP_configureMCU(); //__bis_SR_register(GIE); UART_openPort(&g_myUartPort); // Open Uart for communication UART_transmitBuffer("\n\rHello World!\n\r", sizeof("\n\rHello World!\n\r")); // welcome message // // Start the CapTIvate application // CAPT_appStart(); // // Background Loop // while(1) { // // Run the captivate application handler. // LED1_ON; if(CAPT_appHandler()==true) { P6OUT = BIT0; // led on port 6 turns on UART_transmitBuffer("\n\rHello World!\n\r", sizeof("\n\rHello World!\n\r")); // interuupt message } else { P6OUT = ~BIT0; // led on port six turns off } // // This is a great place to add in any // background application code. // __no_operation(); // // End of background loop iteration // Go to sleep if there is nothing left to do // CAPT_appSleep(); } // End background loop } // End main()