主题中讨论的其他器件:CC3235SF
大家好、团队、
我正在使用 CC3235SF 的 ADC 和 GPIO 模块。 我正在使用 ADC 通道1、2和3、分别使用 GPIO3 (引脚58)、GPIO4 (引脚59)和 GPIO5 (引脚60)。
我 在项目的*。syscfg 中相应地配置了这些 ADC 模块及其引脚。
在我的应用中,我希望在需要时使用 ADC 通道,当 Read_once ()功能结束时,我想将上面提到的引脚配置为 GPIO,并根据需要将它们设置为高电平/低电平。
我正在执行以下步骤:
- ADC_Init()
- ADC_open ()=>根据 用户输入传递 CONFIG_ADC_x 以返回 ADC 句柄。
-
adc_convert ()
- ADC_CLOSE ()=>根据我的理解、此函数将上述模块的 ADC 引脚设置为复位状态。 因此、将引脚功能从模拟更改为数字变得很容易。
调用 adc_close()函数后,我尝试立即将该引脚设置为 GPIO (使用硬件时,不会在*.syscfg 的 GPIO 部分中配置 ADC 引脚)。
为此、我将使用以下寄存器访问函数:
- 为外设提供时钟 HWREG (ARCM_BASE + APPS_RCM_O_GPIO_A_CLK_Gating)= APPS_RCM_GPIO_A_CLK_Ging_GPIO_A_RUN_CLK_ENABLE;
HWREG (ARCM_BASE + APPS_RCM_O_GPIO_B_CLK_Gating)= APPS_RCM_GPIO_B_CLK_GING_GPIO_B_RUN_CLK_ENABLE;
HWREG (ARCM_BASE + APPS_RCM_O_GPIO_C_CLK_Gating)= APPS_RCM_GPIO_C_CLK_Ging_GPIO_C_RUN_CLK_ENABLE;
HWREG (ARCM_BASE + APPS_RCM_O_GPIO_D_CLK_Gating)= APPS_RCM_GPIO_D_CLK_GINGLE_GPIO_D_RUN_CLK_ENABLE;
HWREG (ARCM_BASE + APPS_RCM_O_GPIO_E_CLK_Gating)= APPS_RCM_GPIO_E_CLK_GINGLE_GPIO_E_RUN_CLK_ENABLE;
- 将引脚设置为输出 uint32_t addr = OCP_shared_base + OCP_shared_O_GPIO_PAD_CONFIG_0 + 0x00000004 * IO;
HWREG (addr)= 0b000001100000;
HWREG (((GPIOA0_BASE + 0x00001000 *(IO/8))+ GPIO_GPIO_DIR)|= 0x00000001 <<(IO%8);
- 将引脚的输出驱动更新为高电平
uint32_t addr = OCP_shared_base + OCP_shared_O_GPIO_pad_config_0 + 4 * IO;
HWREG (addr)|= 0b000000010000;
但是、我在引脚上没有获得高电压、而且、 即使在向外设提供时钟之后、我也无法读取 OCP_SHARGE_O_GPIO_PAD_CONFIG_0寄存器。
我还尝试使用 ROM_MAP.h 中的函数 MAP_PinTypeGPIO
请有人指导我完成这一过程。
谢谢你。