1.引言
本文依然来讲HelloWorld_demo。本demo中总共包含3个c程序文件:hello_world.c、pal.h、pal.c。本文旨在说明hello_world.c中每个函数的逻辑。
2.函数
本文件中只包含了3个函数。
HelloWorld_Thread:线程函数
Initialize_Demo:初始化函数
App_Start:主体函数
3.Initialize_Demo
首先开看初始化函数Initialize_Demo:使用PAL_CONSOLE_WRITE_STRING_LITERAL打印了两句字符串。
/**PAL_OUTPUT_END_OF_LINE_STRING
@brief This function is used to pre initialize resource
required before starting the demo this is called
from app_init function in pal.c
*/
void Initialize_Demo(void)
{
PAL_CONSOLE_WRITE_STRING_LITERAL("Hello World demo - Welcome to QCA IoE \r\n");
PAL_CONSOLE_WRITE_STRING_LITERAL(PAL_OUTPUT_END_OF_LINE_STRING);
}
4.App_Start
/**
@brief This function is used to start the demo thread this
is called from app_init function in pal.c
*/
void App_Start(qbool_t ColdBoot)
{
qurt_thread_attr_t Thread_Attribte;
qurt_thread_t Thread_Handle;
int Result;/* Start the main demo app. */
qurt_thread_attr_init(&Thread_Attribte); //初始化线程属性
qurt_thread_attr_set_name(&Thread_Attribte, "HelloThread"); //设置线程的名称
qurt_thread_attr_set_priority(&Thread_Attribte, THREAD_PRIORITY); //设置线程的优先级
qurt_thread_attr_set_stack_size(&Thread_Attribte, THREAD_STACK_SIZE); //设置线程的堆栈大小
Result = qurt_thread_create(&Thread_Handle, &Thread_Attribte, HelloWorld_Thread, NULL); //创建线程
if(Result != QURT_EOK)
{
PAL_CONSOLE_WRITE_STRING_LITERAL("Failed to start Hello World Main thread.");
PAL_CONSOLE_WRITE_STRING_LITERAL(PAL_OUTPUT_END_OF_LINE_STRING);
PAL_CONSOLE_WRITE_STRING_LITERAL(PAL_OUTPUT_END_OF_LINE_STRING);
}
}
5.HelloWorld_Thread
线程函数,每隔1秒打印一句“Hello World”和一个空行。
/**
@brief This function represents the main thread of execution.
*/
static void HelloWorld_Thread(void *Param)
{
/* Say Hello World */
while(true)
{
PAL_CONSOLE_WRITE_STRING_LITERAL("Hello World\r\n");
PAL_CONSOLE_WRITE_STRING_LITERAL(PAL_OUTPUT_END_OF_LINE_STRING);
Sleep(1000); //sleep for 1 sec
}
}