做了一个控制电源的板子,使用CH32V203C8T6芯片,端口 PC13一直不能输出高 。然后找了一个例程,发现PC13,PC14,PC15都不能输出高,而GPIOA是可以变化的。请哪位大神指教一下软件的问题出在哪里。
原理图单片机部分
以下是代码的主要部分
void GPIOA_Toggle_INIT(void)
{
GPIO_InitTypeDef GPIO_InitStructure = {0};
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
/*********************************************************************
* @fn GPIO_Toggle_INIT
*
* @brief Initializes GPIOA.0
*
* @return none
*/
void GPIOC_Toggle_INIT( void )
{
GPIO_InitTypeDef GPIO_InitStructure = {0};
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE );
PWR_BackupAccessCmd( ENABLE ); /*允许修改RTC和后备寄存器*/
RCC_LSEConfig( RCC_LSE_OFF ); /*关闭外部低速时钟,PC14&PC15可以用作普通IO*/
BKP_TamperPinCmd(DISABLE); /*关闭入侵检测功能,PC13可以用作普通IO*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13| GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init( GPIOC, &GPIO_InitStructure );
PWR_BackupAccessCmd(DISABLE); /*禁止修改RTC和后备寄存器*/
}
/*********************************************************************
* @fn main
*
* @brief Main program.
*
* @return none
*/
int main(void)
{
u8 l = 0;
u8 i = 0;
u8 j = 0;
u8 k = 0;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
Delay_Init();
USART_Printf_Init(115200);
printf("SystemClk:%d\r\n", SystemCoreClock);
printf("GPIO_PC13&PC14&PC15 TEST\r\n");
GPIOA_Toggle_INIT();
GPIOC_Toggle_INIT();
while(1)
{
Delay_Ms(100);
GPIO_WriteBit( GPIOA, GPIO_Pin_0, ( i == 0 ) ? ( i = Bit_SET ) : ( i = Bit_RESET ) );
GPIO_WriteBit( GPIOC, GPIO_Pin_13, ( l == 0 ) ? ( l = Bit_SET ) : ( l = Bit_RESET ) );
GPIO_WriteBit( GPIOC, GPIO_Pin_14, ( j == 0 ) ? ( j = Bit_SET ) : ( j = Bit_RESET ) );
GPIO_WriteBit( GPIOC, GPIO_Pin_15, ( k == 0 ) ? ( k = Bit_SET ) : ( k = Bit_RESET ) );
}
}
|