如果不行,这是我的Common.c
void use_sys_init(uint32_t u32PllClock)
{
/* 使能外部晶振时钟(12MHz) */
CLK_EnableXtalRC(CLK_PWRCTL_HXTEN_Msk);
/* 等待外部晶振时钟(12MHz) */
CLK_WaitClockReady(CLK_STATUS_HXTSTB_Msk);
/* 选择内部高速RC作为HCLK,同时HCLK的分频值为1 */
CLK_SetHCLK(CLK_CLKSEL0_HCLKSEL_HXT, CLK_CLKDIV0_HCLK(1));
/* 设置内核时钟为PLL_CLOCK */
CLK_SetCoreClock(u32PllClock);
/* 设置SysTick的时钟源为外部晶振 */
CLK_SetSysTickClockSrc(CLK_CLKSEL0_STCLKSEL_HXT);
}
/****************************************
*函数名称:UART0_Init
*输 入:无
*输 出:无
*功 能:串口0初始化
******************************************/
void use_uart0_init(unsigned int unBaud)
{
/* 使能UART0模块时钟 */
CLK_EnableModuleClock(UART0_MODULE);
/* 选择UART0模块时钟为外部晶振源,分频值为1 */
CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UARTSEL_HXT, CLK_CLKDIV0_UART(1));
/* 设置 UART0 RXD(PD.0)和 TXD(PD.1) */
SYS->GPD_MFPL &= ~(SYS_GPD_MFPL_PD6MFP_Msk | SYS_GPD_MFPL_PD1MFP_Msk);
SYS->GPD_MFPL |= (SYS_GPD_MFPL_PD6MFP_UART0_RXD | SYS_GPD_MFPL_PD1MFP_UART0_TXD);
/* 复位 UART 模块 */
SYS_ResetModule(UART0_RST);
/* 配置UART0和设置UART0波特率 */
UART_Open(UART0, unBaud);
}
void use_uart1_init(unsigned int baudrate)
{
CLK_EnableModuleClock(UART1_MODULE);
CLK_SetModuleClock(UART1_MODULE, CLK_CLKSEL1_UARTSEL_HXT, CLK_CLKDIV0_UART(1));
/* Set PD multi-function pins for UART01 RXD(PD.4) and TXD(PD.5) */
SYS->GPE_MFPH &= ~(SYS_GPE_MFPH_PE8MFP_Msk | SYS_GPE_MFPH_PE9MFP_Msk);
SYS->GPE_MFPH |= (SYS_GPE_MFPH_PE8MFP_UART1_TXD | SYS_GPE_MFPH_PE9MFP_UART1_RXD);
SYS_ResetModule(UART1_RST);
UART_Open(UART1,baudrate);
}
void UART1_configeINT(void)
{
/* Set UART receive time-out */
UART_SetTimeoutCnt(UART1, 20);
/* Set UART FIFO RX interrupt trigger level to 4-bytes*/
UART1->FIFO &= ~UART_FIFO_RFITL_4BYTES;
UART1->FIFO |= UART_FIFO_RFITL_8BYTES;
/* Enable UART4 Interrupt - */
UART_ENABLE_INT(UART1, UART_INTEN_RDAIEN_Msk | UART_INTEN_TOCNTEN_Msk | UART_INTEN_RXTOIEN_Msk);
NVIC_EnableIRQ(UART1_IRQn);
}
/****************************************
*函数名称:Delayms
*输 入:u32PllClock -时钟频率
*输 出:无
*功 能:系统时钟初始化
.12MHz
.24MHz
.48Mhz
.72MHz
.....
******************************************/
void Delayms(uint32_t u32ms)
{
while(u32ms--)
CLK_SysTickDelay(1000);
}
void Delayus(uint32_t u32us)
{
CLK_SysTickDelay(u32us);
}
//不准确延时
void delay_xs()
{
int i = 0x1000;
while(i--)
{
__NOP();
}
}
//返回:字符串的长度
//参数:要转换的数值
//参数2:保存结果的数组
uint16_t IntToStr(uint8_t number,uint8_t* ptr)
{
const uint8_t Char[16] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','f'};
uint8_t temp;
static uint16_t cnt;
do{ temp=number;
number/=16;
ptr[cnt] = Char[temp-number*10];
++cnt;
}while(number);
return cnt;
} |