大家好,一样的程序和配置,CC1310有的IO口可以正常输入输出,有的不正常,配置为输入和输出都是感觉处于三态状态没反应,是什么原因?
芯片是5*5 RHB封装的,测试结果是0、1、4~7引脚不正常,2、3、8~14引脚正常,但第10引脚高电平输出电压只有2.5V
程序是用官方例程gpiointerrupt更改的,主要配置代码如下,为了直观方便,把所有IO口都按顺序放进列表,直接用数字表示
GPIO_PinConfig gpioPinConfigs[] = {
0,
1,
2,
3,
4,
5,
6,
7, 8,
9,
10,
11,
12,
13,
14,
// 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 */
};
void *mainThread(void *arg0)
{
u32 pinIndex;
/* Call driver init functions */
GPIO_init();
// GPIO_setConfig(0, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_HIGH);
// GPIO_setConfig(1, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_HIGH);
// GPIO_setConfig(2, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_HIGH);
// GPIO_setConfig(3, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_HIGH);
// GPIO_setConfig(4, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_HIGH);
// GPIO_setConfig(5, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_HIGH);
// GPIO_setConfig(6, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_HIGH);
GPIO_setConfig(7, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_HIGH);
// GPIO_setConfig(8, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_HIGH);
// GPIO_setConfig(9, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_HIGH);
// GPIO_setConfig(10, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_HIGH);
// GPIO_setConfig(11, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_HIGH);
GPIO_setConfig(12, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_HIGH);
GPIO_setConfig(13, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_HIGH);
// GPIO_setConfig(14, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_HIGH);
GPIO_toggle(13);
GPIO_toggle(13);
pinIndex = 1;
//GPIO_setConfig(pinIndex, GPIO_CFG_IN_NOPULL); //浮空输入
GPIO_setConfig(pinIndex, GPIO_CFG_IN_PU); //上拉输入
// GPIO_setConfig(pinIndex, GPIO_CFG_IN_PD); //下拉输入
while(1)
{
if(GPIO_read(pinIndex))
GPIO_write(13, 1);
else
GPIO_write(13, 0);
}
}
另外,也测试过更改BoardGpioInitTable列表的内容,不管怎么配置,没有影响的。
const PIN_Config BoardGpioInitTable[] = {
// 0 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
// 1 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
// 2 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
// 3 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
// 4 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
// 5 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
// 6 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
// 7 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
// 8 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
// 9 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
// 10 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
// 11 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
// 12 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
// 13 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
// 14 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
PIN_TERMINATE
};
Viki Shi:
有没有换颗芯片试一下?
os ym:
回复 Viki Shi:
有两块板,都 是一样。
Viki Shi:
回复 os ym:
你的封装改过了吗?TI例程默认是7*7的例程,你用5*5需要修改封装,具体方法论坛讨论过,搜一下相关关键字
Viki Shi:
回复 os ym:
感谢提供反馈,恭喜解决问题