#include
/*********************************************************************************************************
** Function name: tickInit
** Descriptions: Initialize uC/OS-II's tick source(system timer),
初始化uC/OS-II的时钟源(系统定时器)
** Input parameters: None 无
** Output parameters: None 无
** Returned value: None 无
*********************************************************************************************************/
static void tickInit (void)
{
SysTickPeriodSet((INT32U)(SysCtlClockGet() / OS_TICKS_PER_SEC) -1 );
SysTickEnable();
SysTickIntEnable();
}
/*********************************************************************************************************
** Function name: tickISRHandler
** Descriptions: Timeout interrupt handler of system timer 系统定时器超时中断
** Input parameters: None 无
** Output parameters: None 无
** Returned value: None 无
*********************************************************************************************************/
void tickISRHandler (void)
{
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr;
#endif
OS_ENTER_CRITICAL();
OSIntNesting++;
OS_EXIT_CRITICAL();
OSTimeTick(); /* Call uC/OS-II's OSTimeTick()*/
OSIntExit();
}
/******************************UART初始化***********************************************************/
void uartInit(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0); // 使能UART模块
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); // 使能RX/TX所在的GPIO端口
GPIOPinTypeUART(GPIO_PORTA_BASE, // 配置RX/TX所在管脚为
GPIO_PIN_0 | GPIO_PIN_1); // UART收发功能
UARTConfigSet(UART0_BASE, // 配置UART端口
115200, // 波特率:9600
UART_CONFIG_WLEN_8 | // 数据位:8
UART_CONFIG_STOP_ONE | // 停止位:1
UART_CONFIG_PAR_NONE); // 校验位:无
//HWREG(UART0_LCRH)=HWREG(UART0_LCRH)&0xEF;
UARTEnable(UART0_BASE); // 使能UART端口
//HWREG(UART0_LCRH)=HWREG(UART0_LCRH)&0xEF;
}
/***********通过UART发送字符串**********************************************/
int uartPuts(int ch )
{
if(ch == '\n')
{
while((HWREG(UART0_FLAG)&0x8));
HWREG(UART0_DATA)=CR ; //输入附加的CR以使字符串被正确显示
//UARTCharPut(UART0_BASE, ch);
}
if(ch == '\r')
{
while((HWREG(UART0_FLAG)&0x8));
HWREG(UART0_DATA)=LF ; //输入附加的CR以使字符串被正确显示
//UARTCharPut(UART0_BASE, ch);
}
while((HWREG(UART0_FLAG)&0x8));
return (HWREG(UART0_DATA)=ch);
}
int fputc(int ch,FILE *f)
{
return (uartPuts(ch)) ;
}
/*********************************************************************************************************
** Function name: targetInit
** Descriptions: Initialize the target board 初始化目标板
** Input parameters: None 无
** Output parameters: None 无
** Returned value: None 无
*********************************************************************************************************/
void targetInit (void)
{
#if PLL_EN == 0 /* Not use PLL 不使用PLL */
SysCtlClockSet(CCLK_DIV | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | EXT_CLK);
/* System clock= */
/* EXT_CLK/CCLK_DIV */
/* 系统时钟=EXT_CLK/CCLK_DIV */
#else /* Use PLL 使用PLL */
SysCtlClockSet(CCLK_DIV | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | EXT_CLK);
/* System clock=200MHz/CCLK_DIV*/
/* 系统时钟=200MHz/CCLK_DIV */
#endif
tickInit(); /* Initialize the uC/OS-II tick*/
uartInit();
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部2条评论
快来发表一下你的评论吧 !