Other Parts Discussed in Thread: CC3220MODA
大家好、
我有一个基于 out_OF_Box 示例的工作代码、其中 GPIO6上有一个中断、导致 LED 切换。
当我添加一行时:
adc_init()
在 mainThread 中、中断停止工作。
概括而言、有人能否解释 ADC_init 和 GPIO 中断处理之间是否存在任何连接?
谢谢、
David
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.
Other Parts Discussed in Thread: CC3220MODA
大家好、
我有一个基于 out_OF_Box 示例的工作代码、其中 GPIO6上有一个中断、导致 LED 切换。
当我添加一行时:
adc_init()
在 mainThread 中、中断停止工作。
概括而言、有人能否解释 ADC_init 和 GPIO 中断处理之间是否存在任何连接?
谢谢、
David
您好、Jan、
以下是 TI 驱动程序配置文件:
/* 版权所有(c) 2016-2017、德州仪器(TI)公司 *保留所有权利。 * * 只要 符合以下条件*、允许以源代码和二进制形式重新分发和使用: * *源代码的重新分发必须保留上述版权 声明*、此条件列表和以下免责声明。 * ***二进制形式的再发行必须在 *随发行提供的文档和/或其他材料中复制上述版权声明、本条件列表和以下免责声明。 * ***未经 事先书面许可、不得使用德州仪器公司的名称或*其贡献者的名称认可或推广从本软件衍生的产品*。 * *本软件由版权所有者和贡献者"按原样"提供 *、 不承担任何明示或暗示的保证、包括但不限于*适销性和特定用途适用性的暗示保证*。 在任何情况下、版权所有者或 *贡献者都不对任何直接、间接、偶然、特殊、 *模范、 或相应的损害(包括但不限于 *采购替代产品或服务;丧失使用、数据或利润; *或业务中断)、但出于任何责任理论 、*无论是在合同中、严格责任还是由于 使用本软件而以任何方式产生的侵权行为(包括疏忽或*其他) 、*即使已获悉可能会发生此类损坏。 // /* === CC3220S_LAUNCHXL.c === *此文件负责为 * CC3220S_LAUNCHXL 板设置特定于电路板的项目。 */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "CC3220S_LAUNCHXL.h" /* 此定义决定是使用 UARTCC32XXDMA 驱动程序 *还是使用 UARTCC32XX (无 DMA)驱动程序。 设置为1可使用 UARTCC32XXDMA *驱动程序。 */ #ifndef TI_DRIVERS_UART_DMA #define TI_DRIVERS_UART_DMA 0 #endif // *========================================== ADC ================================================ */ #include #include ADCCC32XX_Object adcCC3220SObjects[CC3220S_LAUNCHXL_ADCCOUNT]; const ADCCC32XX_HWAttrsV1 adcCC3220SHWAttrs[CC3220S_LAUNCHXL_ADCCOUNT]={ { .adcPin = ADCCC32XX_PIN_58_CH_1 // .adcPin =由 David 关闭的 ADCCC32XX_PIN_59_CH_2 }、 { .adcPin = ADCCC32XX_PIN_59_CH_2 // .adcPin =由 David 关闭的 ADCCC32XX_PIN_60_CH_3 } }; const ADC_Config ADC_CONFIG[CC3220S_LAUNCHXL_ADCCOUNT]={ { .fxnTablePtr =&ADCCC32XX_fxnTable、 .object =&adcCC3220SObjects[CC3220S_LAUNCHXL_ADC0]、 hwAttrs =&adcCC3220SHWAttrs[CC3220S_LAUNCHXL_ADC0] }、 { .fxnTablePtr =&ADCCC32XX_fxnTable、 .object =&adcCC3220SObjects[CC3220S_LAUNCHXL_ADC1]、 hwAttrs =&adcCC3220SHWAttrs[CC3220S_LAUNCHXL_ADC1] } }; const uint_least8_t ADC_count = CC3220S_LAUNCHXL_ADCCOUNT; // *========================================= 捕获========================================= */ #include #include CaptureCC32XX_Object CaptureCC3220SObjects[CC3220S_LAUNCHXL_CAPTURECOUNT]; const CaptureCC32XX_HWAttrs CaptureCC3220SHWAttrs[CC3220S_LAUNCHXL_CAPTURECOUNT]= { { .CapturePin = CaptureCC32XX_PIN_04、 .intPriority =~0 }、 { .CapturePin = CaptureCC32XX_PIN_05、 .intPriority =~0 }、 }; const Capture_Config Capture_config[CC3220S_LAUNCHXL_CAPTURECOUNT]={ { .fxnTablePtr =&CaptureCC32XX_fxnTable、 .object =捕捉 CC3220SObjects[CC3220S_LAUNCHXL_CAPTURE0]、 .hwAttrs =捕捉 CC3220SHWAttrs [CC3220S_LAUNCHXL_CAPTURE0] }、 { .fxnTablePtr =&CaptureCC32XX_fxnTable、 .object =捕捉 CC3220SObjects[CC3220S_LAUNCHXL_CAPTURE1]、 hwAttrs =&captureCC3220SHWAttrs[CC3220S_LAUNCHXL_CAPTURE1] } }; const uint_least8_t Capture_count = CC3220S_LAUNCHXL_CAPTURECOUNT; // *================================================= Crypto ================================================ */ #include CryptoCC32XX_Object cryptoCC3220SObjects[CC3220S_LAUNCHXL_CRYPTOCOUNT]; const CryptoCC32XX_Config CryptoCC32XX_CONFIG[CC3220S_LAUNCHXL_CRYPTOCOUNT]={ { .object =加密 CC3220SObjects[CC3220S_LAUNCHXL_CRYPTO0] } }; const uint_least8_t CryptoCC32XX_count = CC3220S_LAUNCHXL_CRYPTOCOUNT; // *=================================== DMA ================================================ */ #include #if defined (__TI_Compiler_version__) #pragma DATA_ALIGN (dmaControlTable,1024) #Elif defined (__IAR_SYSTEMS_ICC__) #pragma DATA_ALIGNINS=1024 #Elif defined (__GNU__) __attribute__((aligned (1024)))#endif static tControlTable=*=*=dma64==*===[maControlTable_=*=*= dmaErrorFxn === *这是 uDMA 错误中断的处理程序。 */ static void dmaErrorFxn (uintptr_t arg) { int status = map_uDMAErrorStatusGet (); map_uDMAErrorStatusClear (); /*禁止未使用的变量警告*/ (无效)地位; while (1); } UDMACC32XX_Object udmaCC3220SObject; const UDMACC32XX_HWAttrs udmaCC3220SHWAttrs ={ .controlBaseAddr =(void *) dmaControlTable、 .dmaErrorFxn =(UDMACC32XX_ErrorFxn) dmaErrorFxn、 .intNum = INT_UDMAERR、 .intPriority =(~0) }; const UDMACC32XX_Config UDMACC32XX_config ={ .object = udmaCC3220SObject、 hwAttrs =&udmaCC3220SHWAttrs }; /* ========================================= 一般================================================ // /* === CC3220S_LAUNCHXL_initGeneral === */ void CC3220S_LAUNCHXL_initGeneral (void) { PRCMCC3200MCUInit(); power_init(); } /* ======================================== GPIO =========================================== */ #include #include //由 David 修改 // *引脚配置数组 *注:引脚配置的顺序必须与之前 的顺序一致* 在 CC3220S_LAUNCHXL.h 中定义 *注意:不用于中断的引脚应放置在 *的末尾 数组。 回调数组到 *的回调条目可以省略 减少内存使用。 */ GPIO_PinConfig gpioPinConfigs[]={ /*带有回调的输入引脚*/ /* CC3220S_LAUNCHXL_GPIO_SW2 * GPIOCC32XX_GPIO_22 | GPIO_CFG_INPUT| GPIO_CFG_IN_INT_INT_RISING、 /* CC3220S_LAUNCHXL_GPIO_SW3 */ GPIOCC32XX_GPIO_13 | GPIO_CFG_INPUT| GPIO_CFG_IN_INT_INT_RISING、 /*输出引脚*/ /* CC3220S_LAUNCHXL_GPIO_LED_D7 * GPIOCC32XX_GPIO_09 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_HIGH | GPIO_CFG_OUT_LOW、 /* CC3220S_LAUNCHXL_GPIO_LED_GP7 * GPIOCC32XX_GPIO_07 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_HIGH | GPIO_CFG_OUT_LOW、 /* CC3220S_LAUNCHXL_GPIO_LED_GP15 * GPIOCC32XX_GPIO_15 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_HIGH | GPIO_CFG_OUT_LOW、 /* CC3220S_LAUNCHXL_GPIO_LED_GP8 * GPIOCC32XX_GPIO_08 | GPIO_CFG_INPUT| GPIO_CFG_IN_INT_INT_RISING、 /* CC3220S_LAUNCHXL_GPIO_LED_GP12 * GPIOCC32XX_GPIO_12 | GPIO_CFG_INPUT| GPIO_CFG_IN_INT_INT_RISING、 /* CC3220S_LAUNCHXL_GPIO_LED_GP12 *//由 David 于2018年7月31日添加 GPIOCC32XX_GPIO_06 | GPIO_CFG_INPUT | GPIO_CFG_IN_INT_INT_FALLING、 /* * CC3220S_LAUNCHXL_GPIO_LED_D5和 CC3220S_LAUNCHXL_GPIO_LED_D6与共享 * I2C 和 PWM 外设。 为了使这些示例正常工作、这些示例 * LED 取自 gpioPinConfig[] * /* CC3220S_LAUNCHXL_GPIO_LED_D6 * /* GPIOCC32XX_GPIO_10 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_HIGH | GPIO_CFG_OUT_LOW、* /* CC3220S_LAUNCHXL_GPIO_LED_D5 * /* GPIOCC32XX_GPIO_11 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_HIGH | GPIO_CFG_OUT_LOW、*/ }; //>// *回调函数指针数组 *注意:引脚配置的顺序必须与之前 的顺序一致* 在 CC3220S_LAUNCHXL.h 中定义 *注意:不用于中断的引脚可从回调数组中省略至 * 减少内存使用(如果放置在 gpioPinConfigs 数组的末尾)。 */ GPIO_CallbackFxn gpioCallbackFunctions[]={ 空、// CC3220S_LAUNCHXL_GPIO_SW2 */ 空/* CC3220S_LAUNCHXL_GPIO_SW3 */ }; /*特定于器件的 GPIO_CONFIG 结构*/ CONST GPIOCC32XX_Config GPIOCC32XX_CONFIG ={ .pinConfigs =(GPIO_PinConfig *) gpioPinConfigs、 .callback =(GPIO_CallbackFxn *) gpioCallbackFuncions、 numberOfPinConfigs = sizeof (gpioPinConfigs)/sizeof (GPIO_PinConfig)、 numberOfCallbacks = sizeof (gpioCallbackFuncions)/sizeof (GPIO_CallbackFxn)、 .intPriority =(~0) }; /* ========================================= Display ================================================= */ #include #include #define MAXPRINTLEN 1024 DisplayUart_Object displayUartObject; static char displayBuf[MAXPRINTLEN]; const DisplayUart_HWAttrs displayUartHWAttrs ={ uartIdx = 0、 .budrate = 115200、 .mutexTimeout =(unsigned int)(-1)、 strBuf = displayBuf、 strBufLen = MAXPRINTLEN }; #ifndef Board_display_use_uart_ansi #define Board_display_use_uart_ansi 0 #endif const Display_Config Display_config[]={ { # if (Board_display_use_uart_ansi) .fxnTablePtr =&DisplayUartAnsi_fxnTable、 # else //默认为最小 UART,无光标放置*/ .fxnTablePtr =&DisplayUartMin_fxnTable 、# endif .object =显示 UartObject (&D)、 hwAttrs =&displayUartHWAttrs } }; const uint_least8_t Display_count = sizeof (Display_config)/sizeof (Display_Config); // *========================================================= I2C ================================================ */ #include #include I2CCC32XX_Object i2cCC3220SObjects[CC3220S_LAUNCHXL_I2CCOUNT; const I2CCC32XX_HWAttrsV1 i2cCC3220SHWAttrs[CC3220S_LAUNCHXL_I2CCOUNT ={ { baseAddr = I2CA0_BASE、 .intNum = INT_I2CA0、 .intPriority =(~0)、 clkPin = I2CCC32XX_PIN_01_I2C_SCL、 .dataPin = I2CCC32XX_PIN_02_I2C_SDA } }; const I2C_Config I2C_CONFIG[CC3220S_LAUNCHXL_I2CCOUNT ={ { .fxnTablePtr =&I2CCC32XX_fxnTable、 .object =&i2cCC3220SObjects[CC3220S_LAUNCHXL_I2C0]、 hwAttrs =&i2cCC3220SHWAttrs[CC3220S_LAUNCHXL_I2C0] } }; const uint_least8_t I2C_count = CC3220S_LAUNCHXL_I2CCOUNT; // *================================================= I2S ======================================================== */ #include #include I2SCC32XXDMA_Object i2sCC3220SObjects[CC3220S_LAUNCHXL_I2SCOUNT]; const I2SCC32XXDMA_HWAttrsV1 i2sCC3220SHWAttrs[CC3220S_LAUNCHXL_I2SCOUNT]={ { baseAddr = I2S_base、 .intNum = INT_I2S、 .intPriority =(~0)、 .rxChannelIndex = UDMA_CH4_I2S_RX、 txChannelIndex = UDMA_CH5_I2S_TX、 .xr0Pin = I2SCC32XXDMA_PIN_64_McAXR0、 .xr1引脚= I2SCC32XXDMA_PIN_50_McAXR1、 clkxPin = I2SCC32XXDMA_PIN_62_McACLKX、 clkPin = I2SCC32XXDMA_PIN_53_McACLK、 fsxPin = I2SCC32XXDMA_PIN_63_McAFSX 、} }; const I2S_Config I2S_CONFIG[CC3220S_LAUNCHXL_I2SCOUNT]={ { .fxnTablePtr =&I2SCC32XXDMA_fxnTable、 .object =&i2sCC3220SObjects[CC3220S_LAUNCHXL_I2S0]、 hwAttrs =&i2sCC3220SHWAttrs[CC3220S_LAUNCHXL_I2S0] } }; const uint_least8_t I2S_count = CC3220S_LAUNCHXL_I2SCOUNT; /* ========================================== 电源================================================ */ /* 此表定义 了在 LPDS 期间为每个可屏蔽引脚*设置的停止状态。 (在 LPDS 期间必须将器件引脚停驻、以 实现最大的*节电。) 如果引脚应保持悬空状态、请指定状态 * PowerCC32XX_DONT_PARK。 例如、对于 UART TX 引脚、器件 *将在过渡到 LPDS 期间自动将引脚置于高电平状态 、*因此电源管理器不需要显式地将引脚暂留。 因此 、*该表中的相应条目应指示 PowerCC32XX_DONT_PARK。 // PowerCC32XX_ParkInfo parkInfo[]={ // 引脚 驻车状态 引脚别名(功能) -------- ---------------------- ---------- * {PowerCC32XX_PIN01、PowerCC32XX_weak 下拉_STD}、// GPIO10 * {PowerCC32XX_PIN02、PowerCC32XX_weak 下拉_STD}、// GPIO11 * {PowerCC32XX_PIN03、PowerCC32XX_weak 下拉_STD}、// GPIO12 * {PowerCC32XX_PIN04、PowerCC32XX_weak 下拉_STD}、// GPIO13 * {PowerCC32XX_PIN05、PowerCC32XX_weak 下拉_STD}、// GPIO14 * {PowerCC32XX_PIN06、PowerCC32XX_weak 下拉_STD}、// GPIO15 * {PowerCC32XX_PIN07、PowerCC32XX_weak 下拉_STD}、// GPIO16 * {PowerCC32XX_PIN08、PowerCC32XX_weak 下拉_STD}、// GPIO17 * {PowerCC32XX_PIN13、PowerCC32XX_weak 下拉_STD}、/* FLASH_SPI_DIN * {PowerCC32XX_PIN15、PowerCC32XX_weak 下拉_STD}、// GPIO22 * {PowerCC32XX_PIN16、PowerCC32XX_weak 下拉_STD}、// TDI (JTAG 调试)* {PowerCC32XX_PIN17、PowerCC32XX_weak 下拉_STD}、/* TDO (JTAG 调试)*/ {PowerCC32XX_PIN19、PowerCC32XX_weak 下拉_STD}、/* TCK (JTAG 调试)*/ {PowerCC32XX_PIN20、PowerCC32XX_weak 下拉_STD}、/* TMS (JTAG 调试)*/ {PowerCC32XX_PIN18、PowerCC32XX_weak 下拉_STD}、// GPIO28 * {PowerCC32XX_PIN21、PowerCC32XX_weak 下拉_STD}、// SOP2 * {PowerCC32XX_PIN29、PowerCC32XX_weak 下拉_STD}、// ANTSEL1 * {PowerCC32XX_PIN30、PowerCC32XX_weak 下拉_STD}、// ANTSEL2 * {PowerCC32XX_PIN45、PowerCC32XX_weak 下拉_STD}、/* DCDC_ANA2_SW_P * {PowerCC32XX_PIN50、PowerCC32XX_weak 下拉_STD}、// GPIO0 * {PowerCC32XX_PIN52、PowerCC32XX_weak 下拉_STD}、/* RTC_XTAL_N * {PowerCC32XX_PIN53、PowerCC32XX_weak 下拉_STD}、// GPIO30 * {PowerCC32XX_PIN55、PowerCC32XX_weak 上拉_std}、/* GPIO1 (XDS_UART_RX)* {PowerCC32XX_PIN57、PowerCC32XX_weak 上拉_std}、/* GPIO2 (XDS_UART_TX)* {PowerCC32XX_PIN58、PowerCC32XX_weak 下拉_STD}、// GPIO3 * {PowerCC32XX_PIN59、PowerCC32XX_weak 下拉_STD}、// GPIO4 * {PowerCC32XX_PIN60、PowerCC32XX_weak 下拉_STD}、// GPIO5 * {PowerCC32XX_PIN61、PowerCC32XX_weak 下拉_STD}、// GPIO6 * {PowerCC32XX_PIN62、PowerCC32XX_weak 下拉_STD}、// GPIO7 * {PowerCC32XX_PIN63、PowerCC32XX_weak 下拉_STD}、// GPIO8 * {PowerCC32XX_PIN64、PowerCC32XX_weak 下拉_STD}、// GPIO9 */ };/* 此结构定义电源管理器的配置。 * *在此配置中,默认情况下禁用电源策略(因为 * enablePolicy 设置为 false)。 可以 通过调用 Power_enablePolicy()在运行时*动态启用电源策略,也可以在构建时通过在此 结构中将* enablePolicy 更改为 true 来启用电源策略。 */ const PowerCC32XX_ConfigV1 PowerCC32XX_CONFIG ={ .policyInitFxn =&PowerCC32XX_initPolicy、 policyFxn =&PowerCC32XX_sleepPolicy、 .enterLPDSHookFxn =空、 .resumeLPDSHookFxn =空、 .enablePolicy = false、 .enableGPIOWakeupLPDS = true、 .enableGPIOWakeupShutdown = true、 .enableNetworkWakeupLPDS = true、 .wakeupGPIOSourceLPDS = PRCM_LPD_GPIO13、 .wakeupGPIOTypeLPDS = PRCM_LPD_FALL_EDGE、 .wakeupGPIOFxnLPDS =空、 .wakeupGPIOFxnLPDSArg=0、 .wakeupGPIOSourceShutdown = PRCM_HIB_GPIO13、 .wakeupGPIOTypeShutdown = PRCM_HIB_RISE_EDGE、 .ramRetentionMaskLPDS = PRCM_SRAM_COL_1 | PRCM_SRAM_COL_2 | PRCM_SRAM_COL_3 | PRCM_SRAM_COL_4、 keepDebugActiveDuringLPDS = false、 ioRetentionShutdown = PRCM_IO_RET_GRP_1、 .pinParkDefs = parkInfo、 numpins = sizeof (parkInfo)/sizeof (PowerCC32XX_ParkInfo) }; /* =========================================== PWM ================================================ */ #include #include PWMTimerCC32XX_Object pwmTimerCC3220SObjects[CC3220S_LAUNCHXL_PWMCOUNT; const PWMTimerCC32XX_HWAttrsV2 pwmTimerCC3220SHWAttrs[CC3220S_LAUNCHXL_PWMCOUNT ={}{ {/* CC3220S_LAUNCHXL_PWM6 * pwmPin = PWMTimerCC32XX_PIN_01 }、 {* CC3220S_LAUNCHXL_PWM7 */ pwmPin = PWMTimerCC32XX_PIN_02 } }; const PWM_Config PWM_CONFIG[CC3220S_LAUNCHXL_PWMCOUNT ={ { .fxnTablePtr =&PWMTimerCC32XX_fxnTable、 .object =&pwmTimerCC3220SObjects[CC3220S_LAUNCHXL_PWM6]、 hwAttrs =&pwmTimerCC3220SHWAttrs[CC3220S_LAUNCHXL_PWM6] }、 { .fxnTablePtr =&PWMTimerCC32XX_fxnTable、 .object =&pwmTimerCC3220SObjects[CC3220S_LAUNCHXL_PWM7]、 hwAttrs =&pwmTimerCC3220SHWAttrs[CC3220S_LAUNCHXL_PWM7] } }; const uint_least8_t PWM_count = CC3220S_LAUNCHXL_PWMCOUNT; // *================================================= SDFatFS ======================================================== */ #include #include /* 注意:SDFatFS 驱动程序提供了启用 FatFs 的接口功能*,但依靠 SD 驱动程序与 SD 卡进行通信。 打开 * SDFatFs 驱动程序实例将在内部尝试打开 SD 驱动程序实例 *重复使用相同的索引编号(在索引0处打开 SDFatFs 驱动程序将尝试 *在索引0处打开 SD 驱动程序)。 这要求所有 SDFatFs 驱动程序实例 *都具有随附的 SD 驱动程序实例、该实例使用相同的索引进行定义。 可以*接受的 SD 驱动程序实例数多于 SDFatFs 驱动程序实例 *、但不支持相反、SDFatFs 将无法打开。 // SDFatFS_Object sdfatfsObjects[CC3220S_LAUNCHXL_SDFatFSCOUNT]; const SDFatFS_Config SDFatFS_CONFIG[CC3220S_LAUNCHXL_SDFatFSCOUNT]={ { .object =&sdfatfsObjects[CC3220S_LAUNCHXL_SDFatFS0] } }; const uint_least8_t SDFatFS_count = CC3220S_LAUNCHXL_SDFatFSCOUNT; // *==== sd ================================================ */ #include #include SDHostCC32XX_Object sdhostCC3220SObjects[CC3220S_LAUNCHXL_SDCOUNT]; /* SDHost 配置结构、描述要使用的引脚*/ const SDHostCC32XX_HWAttrsV1 sdhostCC3220SHWattrs[CC3220S_LAUNCHXL_SDCOUNT ={] { clkRate = 80000、 .intPriority =~0、 baseAddr = SDHOST_BASE、 .rxChIdx = UDMA_CH23_SDHOST_RX、 txChIdx = UDMA_CH24_SDHOST_TX、 .dataPin = SDHostCC32XX_PIN_06_SDCARD_DATA、 .cmd 引脚= SDHostCC32XX_PIN_08_SDCARD_CMD、 clkPin = SDHostCC32XX_PIN_07_SDCARD_CLK } }; const SD_Config SD_config[CC3220S_LAUNCHXL_SDCOUNT]={ { .fxnTablePtr =&sdHostCC32XX_fxnTable、 .object =&sdhostCC3220SObjects[CC3220S_LAUNCHXL_SD0]、 hwAttrs =&sdhostCC3220SHWattrs[CC3220S_LAUNCHXL_SD0] }、 }; const uint_least8_t sd_count = CC3220S_LAUNCHXL_SDCOUNT; // *================================================= SPI ======================================================== */ #include #include SPICC32XXDMA_Object spiCC3220SDMAObjects[CC3220S_LAUNCHXL_SPICOUNT]; #if defined (__TI_Compiler_version__) #pragma DATA_ALIGN (spiCC3220SDMAscratchBuf、32)#if defined (__IAR_systems_version__)#CC3220SDMCC32_CC32_ t_S (spi20CC32_CC32_t_CC32_CC32_CC32_t_t_S)#t_spi20CC32_t_t_spi_S (#t_CC32_CC32_CC32_CC32_CC32_CC32_t_t_t_t_S /*索引0为链接到 NWP 的 LSPI 预留*/ { baseAddr = LSPI_base、 .intNum = INT_LSPI、 .intPriority =(~0)、 spiPRCM = PRCM_LSPI、 .csControl = SPI_SW_CTRL_CS、 csPolarity = SPI_CS_ACTIVEHIGH、 .pinMode = SPI_4PIN_MODE、 .TurboMode = SPI_Turbo_OFF、 scratchBufPtr =&spiCC3220SDMAscratchBuf[CC3220S_LAUNCHXL_SPI0]、 defaultTxBufValue = 0、 .rxChannelIndex = UDMA_CH12_LSPI_RX、 txChannelIndex = UDMA_CH13_LSPI_TX、 .minDmaTransferSize = 100、 .mosipin = SPICC32XXDMA_PIN_NO_CONFIG、 MISO 引脚= SPICC32XXDMA_PIN_NO_CONFIG、 clkPin = SPICC32XXDMA_PIN_NO_CONFIG、 csPin = SPICC32XXDMA_PIN_NO_CONFIG }、 { baseAddr = GSPI_base、 .intNum = INT_GSPI、 .intPriority =(~0)、 spiPRCM = PRCM_GSPI、 .csControl = SPI_HW_CTRL_CS、 csPolarity = SPI_CS_ACTIVELOW、 .pinMode = SPI_4PIN_MODE、 .TurboMode = SPI_Turbo_OFF、 scratchBufPtr =&spiCC3220SDMAscratchBuf[CC3220S_LAUNCHXL_SPI1]、 defaultTxBufValue = 0、 .rxChannelIndex = UDMA_CH6_GSPI_RX、 txChannelIndex = UDMA_CH7_GSPI_TX、 .minDmaTransferSize = 100、 .mosipin = SPICC32XXDMA_PIN_07_MOSI、 MISO 引脚= SPICC32XXDMA_PIN_06_MISO、 clkPin = SPICC32XXDMA_PIN_05_CLK、 .csPin = SPICC32XXDMA_PIN_08_CS } }; const SPI_Config SPI_CONFIG[CC3220S_LAUNCHXL_SPICOUNT ={ { .fxnTablePtr =&SPICC32XXDMA_fxnTable、 .object =&spiCC3220SDMAObjects[CC3220S_LAUNCHXL_SPI0]、 hwAttrs =&spiCC3220SDMAHWAttrs[CC3220S_LAUNCHXL_SPI0] }、 { .fxnTablePtr =&SPICC32XXDMA_fxnTable、 .object =&spiCC3220SDMAObjects[CC3220S_LAUNCHXL_SPI1]、 hwAttrs =&spiCC3220SDMAHWAttrs[CC3220S_LAUNCHXL_SPI1] } }; const uint_least8_t SPI_count = CC3220S_LAUNCHXL_SPICOUNT; // *========================================= 计时器========================================= */ #include #include TimerCC32XX_Object timerCC3220SObjects[CC3220S_LAUNCHXL_TIMERCOUNT]; const TimerCC32XX_HWAttrs timerCC3220SHWAttrs[CC3220S_LAUNCHXL_TIMERCOUNT]={ { baseAddress = TIMERA0_BASE、 .subTimer = TimerCC32XX_timer32、 .intNum = INT_TIMERA0A、 .intPriority =~0 }、 { baseAddress = TIMERA1_base、 .subTimer = TimerCC32XX_timer16A、 .intNum = INT_TIMERA1A、 .intPriority =~0 }、 { baseAddress = TIMERA1_base、 .subTimer = TimerCC32XX_timer16B、 .intNum = INT_TIMERA1B、 .intPriority =~0 }、 }; const Timer_Config Timer_config[CC3220S_LAUNCHXL_TIMERCOUNT]={ { .fxnTablePtr =&TimerCC32XX_fxnTable、 .object =&timerCC3220SObjects[CC3220S_LAUNCHXL_TIMER0]、 hwAttrs =&timerCC3220SHWAttrs[CC3220S_LAUNCHXL_TIMER0] }、 { .fxnTablePtr =&TimerCC32XX_fxnTable、 .object =&timerCC3220SObjects[CC3220S_LAUNCHXL_Timer1]、 hwAttrs =&timerCC3220SHWAttrs[CC3220S_LAUNCHXL_Timer1] }、 { .fxnTablePtr =&TimerCC32XX_fxnTable、 .object =&timerCC3220SObjects[CC3220S_LAUNCHXL_TIMER2]、 hwAttrs =&timerCC3220SHWAttrs[CC3220S_LAUNCHXL_TIMER2] }、 }; const uint_least8_t Timer_count = CC3220S_LAUNCHXL_TIMERCOUNT; /* ========================================== UART ======================================================== */ #include #if TI_DRIVERS_UART_DMA #include UARTCC32XXDMA_Object uartCC3220SDmaObjects[CC3220S_LAUNCHXL_UARTCOUNT]; /* UART 配置结构*/ const UARTCC32XXDMA_HWAttrsV1 uartCC3220SDmaHWAttrs[CC3220S_LAUNCHXL_UARTCOUNT]={\lang302\f3} { baseAddr = UARTA0_BASE、 .intNum = INT_UARTA0、 .intPriority =(~0)、 .FlowControl = UARTCC32XXDMA_FLOWCTRL_NONE、 .rxChannelIndex = UDMA_CH8_UARTA0_RX、 txChannelIndex = UDMA_CH9_UARTA0_TX、 rxPin = UARTCC32XXDMA_PIN_57_UART0_RX、 txPin = UARTCC32XXDMA_PIN_55_UART0_TX、 ctsPin = UARTCC32XXDMA_PIN_Unassigned、 rtsPin = UARTCC32XXDMA_PIN_Unassigned、 errorFxn =空 }、 { baseAddr = UARTA1_base、 .intNum = INT_UARTA1、 .intPriority =(~0)、 .FlowControl = UARTCC32XXDMA_FLOWCTRL_NONE、 .rxChannelIndex = UDMA_CH10_UARTA1_RX、 txChannelIndex = UDMA_CH11_UARTA1_TX、 rxPin = UARTCC32XXDMA_PIN_08_UART1_RX、 txPin = UARTCC32XXDMA_PIN_07_UART1_TX、 ctsPin = UARTCC32XXDMA_PIN_Unassigned、 rtsPin = UARTCC32XXDMA_PIN_Unassigned、 errorFxn =空 } }; const UART_Config UART_CONFIG[CC3220S_LAUNCHXL_UARTCOUNT]={ { .fxnTablePtr =&UARTCC32XXDMA_fxnTable、 .object = uartCC3220SDmaObjects[CC3220S_LAUNCHXL_UART0]、 hwAttrs = uartCC3220SDmaHWAttrs[CC3220S_LAUNCHXL_UART0] }、 { .fxnTablePtr =&UARTCC32XXDMA_fxnTable、 .object = uartCC3220SDmaObjects[CC3220S_LAUNCHXL_UART1]、 hwAttrs = uartCC3220SDmaHWAttrs[CC3220S_LAUNCHXL_UART1] } }; #else #include UARTCC32XX_Object uartCC3220SObjects[CC3220S_LAUNCHXL_UARTCOUNT]; unsigned char uartCC3220SRingBuffer[CC3220S_LAUNCHXL_UARTCOUNT][32]; /* UART 配置结构* / const UART32XX_HWAtttrsBuffer[CC3220S_UARTCC3220S_UARTCC3220S_UARTCC32X1]= UART20UARTCC32XL_UARTCC3220S[UARTST_APT] { baseAddr = UARTA0_BASE、 .intNum = INT_UARTA0、 .intPriority =(~0)、 .FlowControl = UARTCC32XX_FLOWCTRL_NONE、 .ringBufPtr = uartCC3220SRingBuffer[CC3220S_LAUNCHXL_UART0]、 .ringBufSize = sizeof (uartCC3220SRingBuffer[CC3220S_LAUNCHXL_UART0])、 rxPin = UARTCC32XX_PIN_57_UART0_RX、 txPin = UARTCC32XX_PIN_55_UART0_TX、 ctsPin = UARTCC32XX_PIN_Unassigned、 rtsPin = UARTCC32XX_PIN_Unassigned、 errorFxn =空 }、 { baseAddr = UARTA1_base、 .intNum = INT_UARTA1、 .intPriority =(~0)、 .FlowControl = UARTCC32XX_FLOWCTRL_NONE、 .ringBufPtr = uartCC3220SRingBuffer[CC3220S_LAUNCHXL_UART1]、 .ringBufSize = sizeof (uartCC3220SRingBuffer[CC3220S_LAUNCHXL_UART1])、 rxPin = UARTCC32XX_PIN_08_UART1_RX、 txPin = UARTCC32XX_PIN_07_UART1_TX、 ctsPin = UARTCC32XX_PIN_Unassigned、 rtsPin = UARTCC32XX_PIN_Unassigned、 errorFxn =空 } }; const UART_Config UART_CONFIG[CC3220S_LAUNCHXL_UARTCOUNT]={ { .fxnTablePtr =&UARTCC32XX_fxnTable、 .object = uartCC3220SObjects[CC3220S_LAUNCHXL_UART0]、 hwAttrs = uartCC3220SHWAttrs [CC3220S_LAUNCHXL_UART0] }、 { .fxnTablePtr =&UARTCC32XX_fxnTable、 .object = uartCC3220SObjects[CC3220S_LAUNCHXL_UART1]、 hwAttrs = uartCC3220SHWAttrs[CC3220S_LAUNCHXL_UART1] } }; #endif /* TI_DRIVERS_UART_DMA */ const uint_least8_t UART_COUNT = CC3220S_LAUNCHXL_UARTCOUNT; /* ==== 看门狗========================================= */ #include #include WatchdogCC32XX_Object WatchdogCC3220SObjects[CC3220S_LAUNCHXL_WATCHDOGCOUNT]; const WatchdogCC32XX_HWAttrs watchdogCC3220SHWAttrs[CC3220S_LAUNCHXL_WATCHDOGCOUNT]={ { baseAddr = WDT_BASE、 .intNum = INT_WDT、 .intPriority =(~0)、 重新载入值= 80000000 //默认 CPU 时钟频率下的1秒周期 }; const Watchdog_Config Watchdog_config[CC3220S_LAUNCHXL_WATCHDOGCOUNT]={ { fxnTablePtr =&WatchdogCC32XX_fxnTable、 .object =&watchdogCC3220SObjects[CC3220S_LAUNCHXL_WATCHDOG0]、 hwAttrs =&watchdogCC3220SHWAttrs[CC3220S_LAUNCHXL_WATCHDOG0] } }; const uint_least8_t Watchdog_count = CC3220S_LAUNCHXL_WATCHDOGCOUNT;
SDK 版本为1_60_00_04。
我使用自己的硬件(CC3220MODA)。
谢谢、
David
您好、Jan、
中断工作正常。 这是一个看起来使其变得混乱的单个命令 ADC_init。 再看一下、我发现了一些不确定的事情:
/* 回调函数指针数数数数数数数数数数数数的数组 *注意:引脚配置的顺序必须与之前 的顺序一致* 在 CC3220S_LAUNCHXL.h 中定义 *注意:不用于中断的引脚可从回调数组中省略至 * 减少内存使用(如果放置在 gpioPinConfigs 数组的末尾)。 */ GPIO_CallbackFxn gpioCallbackFunctions[]={ 空、// CC3220S_LAUNCHXL_GPIO_SW2 */ 空/* CC3220S_LAUNCHXL_GPIO_SW3 */ };
我没有在上面的部分中指定 GPIO6的回调函数。 我在 out_for_box.c 中指定了回调函数 这是可以的吗?
谢谢、
David
尊敬的 David:
对于商业项目、TI-RTOS 是免费的。
TI-RTOS 网页:"TI-RTOS 附带完整的源代码、无需预付或运行时许可费用。 多任务内核、设备驱动程序、多核通信、TCP/IP 网络堆栈和 示例都使用开源 BSD 型许可。 这使开发人员能够轻松地将软件传递给合作伙伴或分包商、而无需繁琐的许可限制。 与 GPL 许可证不同、BSD 许可证不要求开发人员提供其整个应用程序源代码。"
1月