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.
您好
我希望配置一个 GPIO 引脚、使其 在 mainThread 中被设置(变为"高电平")。 不过、当切换引脚变为"高电平"时、当我测量引脚的电压时、它处于0V。 我正在使用 CC1310 Launchpad 并编辑 uartEcho 示例、我需要专门配置 IOID_25。 这将是 SPI0 SPI 通信的 CS 引脚。 我已参考了 创建定制电路板的文档 并在 CC1310_LAUNCHPADXL.h 中创建了一个定义;
#define CC1310_LAUNCHXL_GPIO_TEST_PIN IOID_25;
我已经在 Board.h 中将该引脚定义 为:
#define Board_TEST_GPIO_PIN25 CC1310_LAUNCHXL_GPIO_TEST_PIN。
我还在 BoardGpioInitTable 阵列的 CC1310_LAUNCHPADXL.c 中添加了引脚本身的配置参数;
CC1310_LAUNCHXL_GPIO_TEST_PIN | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW| PIN_PushPULL | PIN_DRVSTR_MAX、
为了使用我已经定义的 GPIO 引脚、我已经在单独的.c/.h 文件中创建了一个函数、其中包含 和 Board.h、并通过以下方式切换 mainThread 中 while (1)循环中的引脚:
GPIO_WRITE (Board_TEST_GPIO_PIN25、Board_GPIO_LED_ON)。
但是、在刷写电路板时、引脚不会变为高电平。 除了上面的步骤、我不确定还应该在哪里进行更改、因为除了已经执行的步骤之外、文档中说明 GPIO_PinConfig 需要更改、不过这是一个似乎初始化未使用引脚的数组。 我已经确保 该数组中没有 GPIOCC26XX_DIO_25。
如果您想了解引脚为什么不会变为"高电平"、请提供任何帮助。
此致
我使用 uartEcho 示例并进行以下修改:
Board.h
#define Board_GPIO_BUTTON0 CC1310_LAUNCHXL_GPIO_S1 #define Board_GPIO_BUTTON1 CC1310_LAUNCHXL_GPIO_S2 #define Board_GPIO_BTN1 CC1310_LAUNCHXL_GPIO_S1 #define Board_GPIO_BTN2 CC1310_LAUNCHXL_GPIO_S2 #define Board_GPIO_LED0 CC1310_LAUNCHXL_GPIO_LED_RED #define Board_GPIO_LED1 CC1310_LAUNCHXL_GPIO_LED_GREEN #define Board_GPIO_RLED CC1310_LAUNCHXL_GPIO_LED_RED #define Board_GPIO_GLED CC1310_LAUNCHXL_GPIO_LED_GREEN #define Board_GPIO_LED_ON CC1310_LAUNCHXL_GPIO_LED_ON #define Board_GPIO_LED_OFF CC1310_LAUNCHXL_GPIO_LED_OFF #define Board_GPIO_TMP116_EN CC1310_LAUNCHXL_GPIO_TMP116_EN #define Board_GPIO_TEST_DIO25 CC1310_LAUNCHXL_GPIO_TEST_DIO25 ///////////
CC1310_LAUNCHXL.h
typedef enum CC1310_LAUNCHXL_GPIOName { CC1310_LAUNCHXL_GPIO_S1 = 0, CC1310_LAUNCHXL_GPIO_S2, CC1310_LAUNCHXL_SPI_MASTER_READY, CC1310_LAUNCHXL_SPI_SLAVE_READY, CC1310_LAUNCHXL_GPIO_LED_GREEN, CC1310_LAUNCHXL_GPIO_LED_RED, CC1310_LAUNCHXL_GPIO_TMP116_EN, CC1310_LAUNCHXL_GPIO_SPI_FLASH_CS, CC1310_LAUNCHXL_SDSPI_CS, CC1310_LAUNCHXL_GPIO_LCD_CS, CC1310_LAUNCHXL_GPIO_LCD_POWER, CC1310_LAUNCHXL_GPIO_LCD_ENABLE, CC1310_LAUNCHXL_GPIO_TEST_DIO25,//////////////// CC1310_LAUNCHXL_GPIOCOUNT } CC1310_LAUNCHXL_GPIOName;
CC1310_LAUNCHXL.c
GPIO_PinConfig gpioPinConfigs[] = { /* Input pins */ GPIOCC26XX_DIO_13 | GPIO_DO_NOT_CONFIG, /* Button 0 */ GPIOCC26XX_DIO_14 | GPIO_DO_NOT_CONFIG, /* Button 1 */ GPIOCC26XX_DIO_15 | GPIO_DO_NOT_CONFIG, /* CC1310_LAUNCHXL_SPI_MASTER_READY */ GPIOCC26XX_DIO_21 | GPIO_DO_NOT_CONFIG, /* CC1310_LAUNCHXL_SPI_SLAVE_READY */ /* Output pins */ GPIOCC26XX_DIO_07 | GPIO_DO_NOT_CONFIG, /* Green LED */ GPIOCC26XX_DIO_06 | GPIO_DO_NOT_CONFIG, /* Red LED */ GPIOCC26XX_DIO_30 | GPIO_DO_NOT_CONFIG, /* TMP116_EN */ /* SPI Flash CSN */ GPIOCC26XX_DIO_20 | GPIO_DO_NOT_CONFIG, /* SD CS */ GPIOCC26XX_DIO_21 | GPIO_DO_NOT_CONFIG, /* Sharp Display - GPIO configurations will be done in the Display files */ GPIOCC26XX_DIO_24 | GPIO_DO_NOT_CONFIG, /* SPI chip select */ GPIOCC26XX_DIO_22 | GPIO_DO_NOT_CONFIG, /* LCD power control */ GPIOCC26XX_DIO_23 | GPIO_DO_NOT_CONFIG, /*LCD enable */ GPIOCC26XX_DIO_25 | GPIO_DO_NOT_CONFIG, /////////////////////////////////// }; const PIN_Config BoardGpioInitTable[] = { CC1310_LAUNCHXL_PIN_RLED | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* LED initially off */ CC1310_LAUNCHXL_PIN_GLED | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* LED initially off */ CC1310_LAUNCHXL_PIN_BTN1 | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_BOTHEDGES | PIN_HYSTERESIS, /* Button is active low */ CC1310_LAUNCHXL_PIN_BTN2 | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_BOTHEDGES | PIN_HYSTERESIS, /* Button is active low */ CC1310_LAUNCHXL_SPI_FLASH_CS | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MIN, /* External flash chip select */ CC1310_LAUNCHXL_UART_RX | PIN_INPUT_EN | PIN_PULLDOWN, /* UART RX via debugger back channel */ CC1310_LAUNCHXL_UART_TX | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL, /* UART TX via debugger back channel */ CC1310_LAUNCHXL_SPI0_MOSI | PIN_INPUT_EN | PIN_PULLDOWN, /* SPI master out - slave in */ CC1310_LAUNCHXL_SPI0_MISO | PIN_INPUT_EN | PIN_PULLDOWN, /* SPI master in - slave out */ CC1310_LAUNCHXL_SPI0_CLK | PIN_INPUT_EN | PIN_PULLDOWN, IOID_25 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW| PIN_PUSHPULL,/////////// PIN_TERMINATE };
我可以从应用程序控制 DIO25:
void *mainThread(void *arg0) { char input; const char echoPrompt[] = "Echoing characters:\r\n"; UART_Handle uart; UART_Params uartParams; /* Call driver init functions */ GPIO_init(); UART_init(); /* Configure the LED pin */ GPIO_setConfig(Board_GPIO_LED0, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW); GPIO_setConfig(Board_GPIO_TEST_DIO25, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW); GPIO_write(Board_GPIO_TEST_DIO25, 1); GPIO_write(Board_GPIO_TEST_DIO25, 0);
Siri
你好,Siri
感谢您的答复。
我已经将 CC1310_LAUNCHXL_GPIO_TEST_DIO25添加 到 CC1310_LAUNCHXL.h 文件中、构建时出现以下错误:
错误#41:需要一个标识符
此外、我认为您在上面的第三个代码段中犯了一个错误。 我只能 在 CC1310_LAUNCHXL.c 中找到 BoardGpioInitTable 阵列
我在第一次答复中修改了代码。
我在新项目中进行了上述更改、并验证了我可以切换 DIO25。
Siri
你好,Siri
感谢您的答复。 这是正确的。 但是、您能详细说明您的答案吗? CC1310_LAUNCHXL_GPIO_TEST_DIO25的枚举值是否与其 BoardGpioInitTable 数组中的元素编号相对应?
为什么 将 GPIOCC26XX_DIO_25 | GPIO_DO_NOT_CONFIG 添加到 gpioPinConfigs 数组?
引脚配置的顺序:
/* * Array of Pin configurations * NOTE: The order of the pin configurations must coincide with what was * defined in CC1310_LAUNCHXL.h * NOTE: Pins not used for interrupts should be placed at the end of the * array. Callback entries can be omitted from callbacks array to * reduce memory usage. */ GPIO_PinConfig gpioPinConfigs[] = { /* Input pins */ GPIOCC26XX_DIO_13 | GPIO_DO_NOT_CONFIG, /* Button 0 */ GPIOCC26XX_DIO_14 | GPIO_DO_NOT_CONFIG, /* Button 1 */ GPIOCC26XX_DIO_15 | GPIO_DO_NOT_CONFIG, /* CC1310_LAUNCHXL_SPI_MASTER_READY */ GPIOCC26XX_DIO_21 | GPIO_DO_NOT_CONFIG, /* CC1310_LAUNCHXL_SPI_SLAVE_READY */ /* Output pins */ GPIOCC26XX_DIO_07 | GPIO_DO_NOT_CONFIG, /* Green LED */ GPIOCC26XX_DIO_06 | GPIO_DO_NOT_CONFIG, /* Red LED */ GPIOCC26XX_DIO_30 | GPIO_DO_NOT_CONFIG, /* TMP116_EN */ /* SPI Flash CSN */ GPIOCC26XX_DIO_20 | GPIO_DO_NOT_CONFIG, /* SD CS */ GPIOCC26XX_DIO_21 | GPIO_DO_NOT_CONFIG, /* Sharp Display - GPIO configurations will be done in the Display files */ GPIOCC26XX_DIO_24 | GPIO_DO_NOT_CONFIG, /* SPI chip select */ GPIOCC26XX_DIO_22 | GPIO_DO_NOT_CONFIG, /* LCD power control */ GPIOCC26XX_DIO_23 | GPIO_DO_NOT_CONFIG, /*LCD enable */ GPIOCC26XX_DIO_25 | GPIO_DO_NOT_CONFIG, /////////////////////////////////// };
必须与 CC1310_LAUNCHXL_GPIOName 的顺序匹配:
typedef enum CC1310_LAUNCHXL_GPIOName { CC1310_LAUNCHXL_GPIO_S1 = 0, CC1310_LAUNCHXL_GPIO_S2, CC1310_LAUNCHXL_SPI_MASTER_READY, CC1310_LAUNCHXL_SPI_SLAVE_READY, CC1310_LAUNCHXL_GPIO_LED_GREEN, CC1310_LAUNCHXL_GPIO_LED_RED, CC1310_LAUNCHXL_GPIO_TMP116_EN, CC1310_LAUNCHXL_GPIO_SPI_FLASH_CS, CC1310_LAUNCHXL_SDSPI_CS, CC1310_LAUNCHXL_GPIO_LCD_CS, CC1310_LAUNCHXL_GPIO_LCD_POWER, CC1310_LAUNCHXL_GPIO_LCD_ENABLE, CC1310_LAUNCHXL_GPIO_TEST_DIO25,//////////////// CC1310_LAUNCHXL_GPIOCOUNT } CC1310_LAUNCHXL_GPIOName;
此处介绍了引脚配置:
Siri
你好,Siri
很抱歉、即使此问题已解决、但在给定上述配置的情况下、这些引脚都是特定于 GPIO 的、即它们与任何外设都没有关联。
我提出问题的原因是、我现在有一个带有 CC1310的定制板、其中的 SPI 引脚已重新映射。 从 uartEcho 示例中、我可以看到默认的 SPI 引脚、 除外 CSn 引脚在 BoardGpioInitTable[]中配置。 请问,为何会出现这种情况? CSn 引脚是否专用于 GPIO?
我对此感到混淆、因为 gpioPinConfigs 数组和枚举不包括 SPI 引脚(或其他外设使用的引脚)。
此外,作品中的另一个扳手是,在我的同事中,惯例是 不使用 BoardGpioInitTable 阵列(除了 PIN_TERMINATE ),所有的引脚配置都在 gpioPinConfigs 阵列中完成。 如果我不使用 BoardGpioInitTable 阵列、应该在哪里对 SPI 引脚进行引脚配置?
我很抱歉,但我未能找到合适的人来回答为何实施的原因。
不过、我在 CC1310 LP 上进行了测试、其中更改了 SPI 的位置。
我将其从默认的 DIO8、DIO9、DIO10和 DIO11更改为 DIO12、DIO15、 DIO21和 DIO22。
我只需对代码进行如下更改(在 CC1310_LAUNCHXL.h 中):
/* SPI Board */ //#define CC1310_LAUNCHXL_SPI0_MISO IOID_8 /* RF1.20 */ //#define CC1310_LAUNCHXL_SPI0_MOSI IOID_9 /* RF1.18 */ //#define CC1310_LAUNCHXL_SPI0_CLK IOID_10 /* RF1.16 */ //#define CC1310_LAUNCHXL_SPI0_CSN IOID_11 #define CC1310_LAUNCHXL_SPI0_MISO IOID_12 #define CC1310_LAUNCHXL_SPI0_MOSI IOID_15 #define CC1310_LAUNCHXL_SPI0_CLK IOID_21 #define CC1310_LAUNCHXL_SPI0_CSN IOID_22
Br
Siri