例程上直接是PB0和PB1的复用,下面例子是我用作IO口测试电平是否正常,修改之前是初始化程UART的,不管怎样,PB口都是低电平。
void SYS_Init(void)
{
/*---------------------------------------------------------------------------------------------------------*/
/* Init System Clock */
/*---------------------------------------------------------------------------------------------------------*/
/* Unlock protected registers */
SYS_UnlockReg();
/* Enable External XTAL (4~24 MHz) */
CLK->PWRCTL |= (0x1 << CLK_PWRCTL_HXT_EN_Pos); // HXT Enabled
/* Waiting for 12MHz clock ready */
CLK_WaitClockReady( CLK_CLKSTATUS_HXT_STB_Msk);
/* Switch HCLK clock source to XTAL */
CLK->CLKSEL0 &= ~CLK_CLKSEL0_HCLK_S_Msk;
CLK->CLKSEL0 |= CLK_CLKSEL0_HCLK_S_HXT;
/* Select IP clock source */
CLK->CLKSEL1 &= ~CLK_CLKSEL1_UART_S_Msk;
CLK->CLKSEL1 |= (0x0 << CLK_CLKSEL1_UART_S_Pos);// Clock source from external 12 MHz or 32 KHz crystal clock
/* Enable IP clock */
CLK->APBCLK |= CLK_APBCLK_UART0_EN; // UART0 Clock Enable
/* Update System Core Clock */
/* User can use SystemCoreClockUpdate() to calculate PllClock, SystemCoreClock and CycylesPerUs automatically. */
SystemCoreClockUpdate();
/*---------------------------------------------------------------------------------------------------------*/
/* Init I/O Multi-function */
/*---------------------------------------------------------------------------------------------------------*/
/* Set PB multi-function pins for UART0 RXD and TXD */
//SYS->PB_L_MFP &= ~(SYS_PB_L_MFP_PB0_MFP_Msk|SYS_PB_L_MFP_PB1_MFP_Msk);
//SYS->PB_L_MFP |= (SYS_PB_L_MFP_PB0_MFP_UART0_TX|SYS_PB_L_MFP_PB1_MFP_UART0_RX);
/* Lock protected registers */
SYS_LockReg();
}
void UART0_Init()
{
/*---------------------------------------------------------------------------------------------------------*/
/* Init UART */
/*---------------------------------------------------------------------------------------------------------*/
UART_Open(UART0, 115200);
}
void delay_nnn(void)
{
UINT32 i = 0, j=0;
for(i=0;i<100;i++){
for(j=0;j<10000;j++);
}
}
/**
* @brief Main routine.
* @param None.
* @return None.
*/
int32_t main(void)
{
SYS_Init();
//UART0_Init();
GPIO_SetMode(PA, BIT14, GPIO_PMD_OUTPUT);
GPIO_SetMode(PB, BIT0, GPIO_PMD_OUTPUT);
GPIO_SetMode(PB, BIT1, GPIO_PMD_OUTPUT);
GPIO_SetMode(PB, BIT2, GPIO_PMD_OUTPUT);
GPIO_SetMode(PB, BIT3, GPIO_PMD_OUTPUT);
GPIO_SetMode(PB, BIT4, GPIO_PMD_OUTPUT);
GPIO_SetMode(PB, BIT5, GPIO_PMD_OUTPUT);
GPIO_SetMode(PC, BIT0, GPIO_PMD_OUTPUT);
PA14 = 0;
/*---------------------------------------------------------------------------------------------------------*/
/* SAMPLE CODE */
/*---------------------------------------------------------------------------------------------------------*/
while(1){
//UART_Write(UART0, (uint8_t *)"aaaaaa", 7);
//SendChar_ToUART(0x5a);
// printf("\n\nCPU @ %dHz\n", SystemCoreClock);
PA14 = 0;
PB0 = 0;
PB1 = 0;
PB2 = 0;
PB3 = 0;
PB4 = 0;
PB5 = 0;
PC0 = 0;
delay_nnn();
//UART_Write(UART0, (uint8_t *)"aaaaaa", 7);
//SendChar_ToUART(0xaa);
// printf("\n\nCPU @ %dHz\n", SystemCoreClock);
PA14 = 1;
PB0 = 1;
PB1 = 1;
PB2 = 1;
PB3 = 1;
PB4 = 1;
PB5 = 1;
PC0 = 1;
delay_nnn();
}
|