包头网站建设公司网页制作培训试题
2026/6/1 10:38:34 网站建设 项目流程
包头网站建设,公司网页制作培训试题,明薇通网站建设,网站建设用阿里云的虚拟主机JL-695X-SDK 具体的启动流程就不一一说了#xff0c;已经很熟悉了#xff0c;这里挑一些重点记录一下#xff0c;以防后面再重新来写JL的时候一头雾水一、启动流程 上电肯定是先从main函数开始执行#xff0c;JL-695X-SDK#xff08;后面都用SDK代替#xff09;的main函数…JL-695X-SDK 具体的启动流程就不一一说了已经很熟悉了这里挑一些重点记录一下以防后面再重新来写JL的时候一头雾水一、启动流程上电肯定是先从main函数开始执行JL-695X-SDK后面都用SDK代替的main函数在init.c内重点关注这一句task_create(app_task_handler,NULL,app_core);会创建app_task_handler这一个进程然后进入app_main函数app_main函数内重点关注这一句app_curr_taskAPP_POWERON_TASK;app_curr_task变量是非常重要的一个变量此变量在SDK中所有的模式切换中都会使用到这一句作用就是设置下一个模式为开机模式APP_POWERON_TASK在app_main函数的最后会进入模式处理函数app_task_loop之后SDK就会一直在模式处理函数之中运行那我们可以很清楚的看到app_task_loop()是一个向量机的形式switch里面的变量就是我们上面说的app_curr_task因为我们之前设置了app_curr_task APP_POWERON_TASK;所以这里会进入case APP_POWERON_TASK:从而进入app_poweron_task();switch(app_curr_task){caseAPP_POWERON_TASK:log_info(APP_POWERON_TASK \n);app_poweron_task();break;进入之后会进行UI显示之后是提示音的播放在提示音播放结束之后会执行对应的回调函数从而进行初始化tone_play_with_callback_by_name即提示音播放函数内部含回调函数tone_play_end_callback// app_poweron_task() interrtone_play_with_callback_by_name(tone_table[IDEX_TONE_POWER_ON],1,tone_play_end_callback,(void*)IDEX_TONE_POWER_ON);/* if (err) { //提示音没有,播放失败直接init流程 *//* power_on_init(); *//* } */while(1){app_task_get_msg(msg,ARRAY_SIZE(msg),1);switch(msg[0]){caseAPP_MSG_SYS_EVENT:if(poweron_sys_event_handler((structsys_event*)(msg1))false){app_default_event_deal((structsys_event*)(msg[1]));//由common统一处理}break;default:break;}if(app_task_exitting()){power_on_unint();return;}}staticvoidtone_play_end_callback(void*priv,intflag){intindex(int)priv;if(APP_POWERON_TASK!app_get_curr_task()){log_error(tone callback task out \n);return;}switch(index){caseIDEX_TONE_POWER_ON:power_on_init();break;}}power_on_init()初始化定义函数请注意这里的初始化函数运行是在播放完毕提示音之后的因为这个函数是提示音播放函数的回调所以这里面的定义只有等到提示音播放完才会开始运行。staticintpower_on_init(void){///有些需要在开机提示完成之后再初始化的东西 可以在这里初始化#ifDEMO_GPIO_LED_ENABLELED_DEMO();#endif#ifDEMO_PWM_LED_ENABLEexternvoidtimer_pwm_test(void);timer_pwm_test();#endif#ifDEMO_SYSTIMER_ENABLEexternvoidSystimer_demo_init();当然如果你需要在刚刚上电就进行初始化比如初始化一些GPIO等等…可以在板级配置文件文件夹下面的.c文件中的board_init()函数中进行编写这里的定义会在上电时进行因为board_init()在app_task_handler()中的的app_init()被调用在app_main()函数之前board_ac695x_demo.c —— Line952继续在power_on_init()函数里面进行当执行完毕初始化之后会进入下一个模式的选择这个可以自己定义如果想要下一个模式进入蓝牙模式这里可以写app_task_switch_to(APP_BT_TASK);app_task_switch_to(APP_BT_TASK);其中app_task_switch_to()核心逻辑为修改下面两个参数而不是直接修改app_curr_task//app_task为传入的参数app_prev_taskapp_curr_task;//记录当前的模式为上一个模式app_next_taskapp_task;//将下一个模式记录为传入的参数因为app_next_task在这里被app_task_switch_to(APP_BT_TASK)修改为APP_BT_TASK所以会被模式中的退出检测函数捕捉到u8app_task_exitting()//{structsys_eventclear_key_event{.typeSYS_KEY_EVENT,.arg(void*)DEVICE_EVENT_FROM_KEY};if(app_next_task!0){app_curr_taskapp_next_task;app_next_task0;sys_key_event_disable();sys_event_clear(clear_key_event);return1;}return0;}其中里面的if (app_next_task ! 0) {就是退出条件而我们已经在上面把app_next_task换成了APP_BT_TASK所以这里才会修改app_curr_task然后清空app_next_task避免进入下一个模式错误退出。这样函数就回退到了app_loop_task()后面的运行中会根据app_next_task进入CASE APP_BT_TASK从而开始蓝牙模式至此SDK启动完成正式开始运行二、程序调试方式JL芯片和其他的MCU不太一样他不能够使用常规的仿真调试方法去进行调试只能够通过设置UART打印日志的方式进行调试打印总开关位置app_config.hLine —— 17如果想要关闭打印注释掉这个东西就可以了#defineCONFIG_DEBUG_ENABLE打印总开关开启之后回到板级配置文件中配置好对应参数主要是串口的脚位以及波特率因为只是打印输出所以接收的脚位也可以不配置#defineTCFG_UART0_ENABLE1//ENABLE_THIS_MOUDLE //串口打印模块使能#defineTCFG_UART0_RX_PORTNO_CONFIG_PORT//串口接收脚配置用于打印可以选择NO_CONFIG_PORT#defineTCFG_UART0_TX_PORTIO_PORTA_12//串口发送脚配置#defineTCFG_UART0_BAUDRATE1000000//串口波特率配置然后配置好外部硬件连接完成

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询