我最近需要通过CC2640对温湿度传感器AM2301进行数据采集,采集的过程中需要对CC2640的IO口进行推挽输出和上拉输入同时设置,我想问下CC2640可以做到吗?
请问我这样设置对吗?
/**
* 函数功能: 使DHT11-DATA引脚变为上拉输入模式
* 输入参数: 无
* 返 回 值: 无
* 说 明:无
*/
static void DHT11_Mode_IPU(void)
{
const PIN_Config UserGpioInitTable[] = {
USER_CTL_DHT_IO | PIN_INPUT_EN | PIN_PULLUP | PIN_DRVSTR_MAX,
PIN_TERMINATE
};
//PIN_init(UserGpioInitTable);
MotorIoHandle = NULL;
if(MotorIoHandle == NULL )
{
MotorIoHandle = PIN_open(&MotorIoState,UserGpioInitTable);
}
else
{
PIN_close(MotorIoHandle);
MotorIoHandle = NULL;
}
}
/**
* 函数功能: 使DHT11-DATA引脚变为推挽输出模式
* 输入参数: 无
* 返 回 值: 无
* 说 明:无
*/
static void DHT11_Mode_Out_PP(void)
{ const PIN_Config UserGpioInitTable[] = {
USER_CTL_DHT_IO | PIN_GPIO_OUTPUT_EN| PIN_PUSHPULL | PIN_DRVSTR_MAX,
PIN_TERMINATE
}; //PIN_init(UserGpioInitTable);
MotorIoHandle = NULL;
if(MotorIoHandle == NULL )
{
MotorIoHandle = PIN_open(&MotorIoState,UserGpioInitTable);
}
else
{
PIN_close(MotorIoHandle);
MotorIoHandle = NULL;
}
}
我在这里对这个IO进行设置的时候发现,PIN_init();这一句总是会跑死是因为什么?
user6118081:
希望有知道的各位大牛们可以帮忙解释一下这个问题
Alvin Chen:
回复 user6118081:
你不能重复使用PIN_open,当你PIN_init之后需要使用PIN_setConfig去改变pin的配置。
user6118081:
回复 Alvin Chen:
谢谢,大佬
user6118081:
回复 user6118081:
如果需要重复配置IO的输出或者输入应该是什么样子的有例程吗
Alvin Chen:
回复 user6118081:
void set_gpio_output(uint8 Pin_id, bool is_high){ if(is_high) { PIN_setConfig(WB_hGpioPin, PIN_BM_ALL, Pin_id | PIN_GPIO_OUTPUT_EN |PIN_GPIO_HIGH); } else { PIN_setConfig(WB_hGpioPin, PIN_BM_ALL, Pin_id | PIN_GPIO_OUTPUT_EN |PIN_GPIO_LOW); }}
user6118081:
回复 Alvin Chen:
你发的这个有什么用啊,我发现你们每次发的都是这个,太敷衍了
user6118081:
回复 user6118081:
我就想知道,一个IO可以分别写两个函数,上拉输入和推挽输出吗?
比如像stm32这样的设置函数,能实现吗,/*** 函数功能: 使DHT11-DATA引脚变为上拉输入模式* 输入参数: 无* 返 回 值: 无* 说明:无*/
static void DHT11_Mode_IPU(void)
{GPIO_InitTypeDef GPIO_InitStruct;/* 串口外设功能GPIO配置 */GPIO_InitStruct.Pin= DHT11_Dout_PIN;GPIO_InitStruct.Mode= GPIO_MODE_INPUT;GPIO_InitStruct.Pull= GPIO_PULLUP;HAL_GPIO_Init(DHT11_Dout_PORT, &GPIO_InitStruct);
}/*** 函数功能: 使DHT11-DATA引脚变为推挽输出模式* 输入参数: 无* 返 回 值: 无* 说明:无*/
static void DHT11_Mode_Out_PP(void)
{GPIO_InitTypeDef GPIO_InitStruct;/* 串口外设功能GPIO配置 */GPIO_InitStruct.Pin = DHT11_Dout_PIN;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(DHT11_Dout_PORT, &GPIO_InitStruct);
}
要能实现的话,应该怎么配置?
yao:
楼主你的问题解决了吗?我用cc1310也遇到类似的问题。一个IO口分时配置为输入或者输出。
吐槽一下,我用cc1310也用的yuxianyusi。TI的提供的demo就不能写好一点么。
user6118081:
回复 yao:
我的已经解决了,楼上的兄弟
user6118081:
回复 user6118081:
你现在解决了吗,需要提供帮助吗