当前位置: 首页 > news >正文

网站建设费 会计分录网页美工用什么软件

网站建设费 会计分录,网页美工用什么软件,百度推广文案,阳江网站设计公司目录 任务通知的简介 任务通知值的更新方式 任务通知的优势 任务通知的劣势 任务通知值和通知状态 发送通知相关API函数 接收通知相关API函数 任务通知模拟信号量实验 任务通知模拟消息邮箱实验 任务通知模拟事件标志组实验 任务通知的简介 任务通知:用来通知任务的…目录 任务通知的简介 任务通知值的更新方式 任务通知的优势 任务通知的劣势 任务通知值和通知状态 发送通知相关API函数 接收通知相关API函数 任务通知模拟信号量实验 任务通知模拟消息邮箱实验 任务通知模拟事件标志组实验 任务通知的简介 任务通知:用来通知任务的,任务控制块中的结构体成员变量 ulNotifiedValue就是这个通知值。 使用队列、信号量、事件标志组时都需另外创建一个结构体,通过中间的结构体进行间接通信! 使用任务通知时,任务结构体TCB中就包含了内部对象,可以直接接收别人发过来的通知 任务通知值的更新方式 不覆盖接受任务的通知值、覆盖接受任务的通知值、更新接受任务通知值的一个或多个bit、增加接受任务的通知值。 只要合理,灵活的利用任务通知的特点,可以在一些场合中替代队列、信号量、事件标志组! 任务通知的优势 效率更高:使用任务通知向任务发送事件或数据比使用队列、事件标志组或信号量快得多 使用内存更小:使用其他方法时都要先创建对应的结构体,使用任务通知时无需额外创建结构体 任务通知的劣势 无法发送数据给ISR:ISR没有任务结构体,所以无法给ISR发送数据。但是ISR可以使用任务通知的功能,发数据给任务。 无法广播给多个任务:任务通知只能是被指定的一个任务接收并处理 无法缓存多个数据:任务通知是通过更新任务通知值来发送数据的,任务结构休中只有一个任务通知值,只能保持一个数据。 发送受阻不支持阻塞:发送方无法进入阻塞状态等待 任务通知值和通知状态 任务都有一个结构体:任务控制块TCB,它里边有两个结构体成员变量: 一个是 uint32_t类型,用来表示通知值 一个是 uint8_t 类型,用来表示通知状态 任务通知值 任务通知值的更新方式有多种类型: 计数值(数值累加,类似信号量) 相应位置一(类似事件标记组) 任意数值(支持覆写和不覆写,类似队列) 任务通知状态 其中任务通知状态共有3种取值: #definetaskNOT_WAITING_NOTIFICATION ((uint8_t) 0)   /* 任务未等待通知*/#definetaskWAITING_NOTIFICATION     ((uint8_t) 1)     /* 任务在等待通知*/#definetaskNOTIFICATION_RECEIVED     ((uint8_t) 2) /* 任务在等待接收*/ 任务未等待通知:任务通知默认的初始化状态 等待通知:接收方已经准备好了(调用了接收任务通知函数) ,等待发送方给个通知 等待接收:发送方已经发送出去(调用了发送任务通知函数) ,等待接收方接收 发送通知相关API函数 任务通知API函数主要有两类:发送通知,接收通知。 注意:发送通知API函数可以用于任务和中断服务函数中;接收通知API函数只能用在任务中。 发送通知,带有通知值并保留接收任务原通知值函数 #define xTaskNotifyAndQuery (xTaskToNotify, ulValue, eAction, pulPreviousNotifyValue) \xTaskGenericNotify( (xTaskToNotify), (tskDEFAULT_INDEX_TO_NOTIFY), (ulValue), (eAction), (pulPreviousNotifyValue)) 发送通知,带有通知值函数 #define xTaskNotify (xTaskToNotify, ulValue, eAction )xTaskGenericNotify( (xTaskToNotify),(tskDEFAULT_INDEX_TO_NOTIFY),(ulValue), (eAction),NULL) 发送通知,不带通知值函数 #define xTaskNotifyGive( xTaskToNotify )xTaskGenericNotify( (xTaskToNotify),(tskDEFAULT_INDEX_TO_NOTIFY),(0), elncrement,NULL) 任务通知方式共有以下几种: 接收通知相关API函数 当任务通知用作于信号量时,使用函数获取信号量: ulTaskNotifyTake() 当任务通知用作于事件标志组或队列时,使用此函数来获取: xTaskNotifyWait() 此函数用于接收任务通知值,可以设置在退出此函数的时候将任务通知值清零或者减一 #define ulTaskNotifyTake( xClearCountOnExit ,xTicksToWait )ulTaskGenericNotifyTake ( (tskDEFAULT_INDEX_TO_NOTIFY),(xClearCountOnExit),(xTicksToWait)) 此函数用于获取通知值和清除通知值的指定位值,适用于模拟队列和事件标志组,使用该函数来获取任务通知。 #define xTaskNotifyWait(  ulBitsToClearOnEntry,ulBitsToClearOnExit,pulNotificationValue,xTicksToWait)xTaskGenericNotifyWait( tskDEFAULT_INDEX_TO_NOTIFY,(ulBitsToClearOnEntry),(ulBitsToClearOnExit),(pulNotificationValue),(xTicksToWait) 任务通知模拟信号量实验 任务通知功能模拟二值信号量和计数型信号量将设计三个任务: start_task、 task1、task2 start_task:用来创建task1和task2任务 task1:用于按键扫描,当检测到按键KEYO被按下时,将发送任务通知 task2:用于接收任务通知,并打印相关提示信息 /********************************************************************************* file : user_mian.h* brief : V1.00******************************************************************************* attention********************************************************************************//* Include 包含---------------------------------------------------------------*/ #include stm32f10x.h #include stdbool.h #include user_gpio.h #include user_delay.h #include user_rcc_config.h #include user_uart.h #include FreeRTOS.h #include task.h #include semphr.h #include user_key.h #include queue.h #include event_groups.h /* Typedef 类型----------------------------------------------------------------*/ /* Define 定义----------------------------------------------------------------*/ /* Macro 宏------------------------------------------------------------------*/ /* Variables 变量--------------------------------------------------------------*/ /* Constants 常量--------------------------------------------------------------*/ /* Function 函数--------------------------------------------------------------*///任务优先级 #define START_TASK_PRIO 1 //任务堆栈大小 #define START_STK_SIZE 128 //任务句柄 TaskHandle_t StartTask_Handler; //任务函数 void start_task(void *pvParameters);//任务优先级 #define TASK1_PRIO 4 //任务堆栈大小 #define TASK1_STK_SIZE 100 //任务句柄 TaskHandle_t TASK1_Handler; //任务函数 void task1(void *pvParameters);//任务优先级 #define TASK2_PRIO 3 //任务堆栈大小 #define TASK2_STK_SIZE 100 //任务句柄 TaskHandle_t TASK2_Handler; //任务函数 void task2(void *pvParameters);int main(void){ /*配置系统中断分组为4位抢占*/NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);/*延时函数初始化*/delay_init();/*RCC配置*/Rcc_config();/*GPIO初始化*/ Gpio_Init();/*USART1初始化*/Uart1_Init(9600);/*创建开始任务*/xTaskCreate((TaskFunction_t )start_task, //任务函数(const char* )start_task, //任务名称(uint16_t )START_STK_SIZE, //任务堆栈大小(void* )NULL, //传递给任务函数的参数(UBaseType_t )START_TASK_PRIO, //任务优先级(TaskHandle_t* )StartTask_Handler); //任务句柄 vTaskStartScheduler(); //开启任务调度}/*!\brief 开始任务函数\param[in] 传递形参创建任务时用户自己传入\param[out] none\retval none */ void start_task(void *pvParameters) {taskENTER_CRITICAL(); //进入临界区//创建高优先级任务xTaskCreate((TaskFunction_t )task1, (const char* )task1, (uint16_t )TASK1_STK_SIZE, (void* )NULL, (UBaseType_t )TASK1_PRIO, (TaskHandle_t* )TASK1_Handler); //创建中优先级任务xTaskCreate((TaskFunction_t )task2, (const char* )task2, (uint16_t )TASK2_STK_SIZE, (void* )NULL,(UBaseType_t )TASK2_PRIO,(TaskHandle_t* )TASK2_Handler); vTaskDelete(StartTask_Handler); //删除开始任务taskEXIT_CRITICAL(); //退出临界区 }/*!\brief 任务1发送任务通知\param[in] 传递形参创建任务时用户自己传入\param[out] none\retval none */ void task1(void *pvParameters) {uint8_t key 0;while(1){ key Key_Scan(0);if(key KEY0_PRES){taskENTER_CRITICAL(); //进入临界区//printf(任务通知模拟二值信号量释放\r\n\r\n);printf(任务通知模拟计数型信号量释放\r\n\r\n);taskEXIT_CRITICAL(); //退出临界区/*发送任务通知给任务2信号量*/xTaskNotifyGive(TASK2_Handler);}vTaskDelay(10);} } /*!\brief 任务2接收通知并打印 \param[in] 传递形参创建任务时用户自己传入\param[out] none\retval none */ void task2(void *pvParameters) {uint32_t Value 0;while(1){ /*接受信号量,pdTRUE接收成功后通知值清零(二值)pdFALSE(计数型),死等*/ Value ulTaskNotifyTake(pdFALSE,portMAX_DELAY);if(Value ! 0){ // taskENTER_CRITICAL(); //进入临界区 // printf(任务通知模拟二值信号量接受成功\r\n\r\n); // taskEXIT_CRITICAL(); //退出临界区 taskENTER_CRITICAL(); //进入临界区printf(任务通知模拟计数信号量接受成功值为%d\r\n\r\n,Value);taskEXIT_CRITICAL(); //退出临界区 }vTaskDelay(1000);} }/************************************************************** END OF FILE ****/ 任务通知模拟消息邮箱实验 任务通知功能模拟模拟消息邮箱将设计三个任务: start_task、 task1、task2 start_task:用来创建task1和task2任务 task1:用于按键扫描将按下的按键键值通过任务通知发送给指定任务 task2:用于接收任务通知,并根据接收到的数据做相应动作 /********************************************************************************* file : user_mian.h* brief : V1.00******************************************************************************* attention********************************************************************************//* Include 包含---------------------------------------------------------------*/ #include stm32f10x.h #include stdbool.h #include user_gpio.h #include user_delay.h #include user_rcc_config.h #include user_uart.h #include FreeRTOS.h #include task.h #include semphr.h #include user_key.h #include queue.h #include event_groups.h /* Typedef 类型----------------------------------------------------------------*/ /* Define 定义----------------------------------------------------------------*/ /* Macro 宏------------------------------------------------------------------*/ /* Variables 变量--------------------------------------------------------------*/ /* Constants 常量--------------------------------------------------------------*/ /* Function 函数--------------------------------------------------------------*///任务优先级 #define START_TASK_PRIO 1 //任务堆栈大小 #define START_STK_SIZE 128 //任务句柄 TaskHandle_t StartTask_Handler; //任务函数 void start_task(void *pvParameters);//任务优先级 #define TASK1_PRIO 4 //任务堆栈大小 #define TASK1_STK_SIZE 100 //任务句柄 TaskHandle_t TASK1_Handler; //任务函数 void task1(void *pvParameters);//任务优先级 #define TASK2_PRIO 3 //任务堆栈大小 #define TASK2_STK_SIZE 100 //任务句柄 TaskHandle_t TASK2_Handler; //任务函数 void task2(void *pvParameters);int main(void){ /*配置系统中断分组为4位抢占*/NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);/*延时函数初始化*/delay_init();/*RCC配置*/Rcc_config();/*GPIO初始化*/ Gpio_Init();/*USART1初始化*/Uart1_Init(9600);/*创建开始任务*/xTaskCreate((TaskFunction_t )start_task, //任务函数(const char* )start_task, //任务名称(uint16_t )START_STK_SIZE, //任务堆栈大小(void* )NULL, //传递给任务函数的参数(UBaseType_t )START_TASK_PRIO, //任务优先级(TaskHandle_t* )StartTask_Handler); //任务句柄 vTaskStartScheduler(); //开启任务调度}/*!\brief 开始任务函数\param[in] 传递形参创建任务时用户自己传入\param[out] none\retval none */ void start_task(void *pvParameters) {taskENTER_CRITICAL(); //进入临界区//创建高优先级任务xTaskCreate((TaskFunction_t )task1, (const char* )task1, (uint16_t )TASK1_STK_SIZE, (void* )NULL, (UBaseType_t )TASK1_PRIO, (TaskHandle_t* )TASK1_Handler); //创建中优先级任务xTaskCreate((TaskFunction_t )task2, (const char* )task2, (uint16_t )TASK2_STK_SIZE, (void* )NULL,(UBaseType_t )TASK2_PRIO,(TaskHandle_t* )TASK2_Handler); vTaskDelete(StartTask_Handler); //删除开始任务taskEXIT_CRITICAL(); //退出临界区 }/*!\brief 任务1发送任务通知\param[in] 传递形参创建任务时用户自己传入\param[out] none\retval none */ void task1(void *pvParameters) {uint8_t key 0;while(1){ key Key_Scan(0);if((key ! 0) (TASK2_Handler ! NULL)){taskENTER_CRITICAL(); //进入临界区printf(任务通知模拟消息邮箱发送,发送的键值为:%d\r\n\r\n,key);taskEXIT_CRITICAL(); //退出临界区/*发送任务通知给任务2消息邮箱,按键值,覆写方式*/xTaskNotify(TASK2_Handler,key,eSetValueWithoutOverwrite);}vTaskDelay(10);} } /*!\brief 任务2接收通知并打印 \param[in] 传递形参创建任务时用户自己传入\param[out] none\retval none */ void task2(void *pvParameters) {uint32_t Value 0;while(1) { /*接受任务通知,初始化时不清0,接受成功后全部清零,死等方式*/ xTaskNotifyWait(0,0xFFFFFFFF,Value,portMAX_DELAY);if(Value ! 0){taskENTER_CRITICAL(); //进入临界区printf(任务通知模拟消息邮箱接受成功值为%d\r\n\r\n,Value);taskEXIT_CRITICAL(); //退出临界区 }vTaskDelay(1000);} }/************************************************************** END OF FILE ****/ 任务通知模拟事件标志组实验 任务通知功能模拟模拟事件标志组将设计三个任务: start_task、 task1、task2 start_task:用来创建task1和task2任务 task1:用于按键扫描当检测到按键按下时,发送任务通知设置不同标志位 task2:用于接收任务通知,并打印相关提示信息 /********************************************************************************* file : user_mian.h* brief : V1.00******************************************************************************* attention********************************************************************************//* Include 包含---------------------------------------------------------------*/ #include stm32f10x.h #include stdbool.h #include user_gpio.h #include user_delay.h #include user_rcc_config.h #include user_uart.h #include FreeRTOS.h #include task.h #include semphr.h #include user_key.h #include queue.h #include event_groups.h /* Typedef 类型----------------------------------------------------------------*/ /* Define 定义----------------------------------------------------------------*/ /* Macro 宏------------------------------------------------------------------*/ /* Variables 变量--------------------------------------------------------------*/ /* Constants 常量--------------------------------------------------------------*/ /* Function 函数--------------------------------------------------------------*///任务优先级 #define START_TASK_PRIO 1 //任务堆栈大小 #define START_STK_SIZE 128 //任务句柄 TaskHandle_t StartTask_Handler; //任务函数 void start_task(void *pvParameters);//任务优先级 #define TASK1_PRIO 4 //任务堆栈大小 #define TASK1_STK_SIZE 100 //任务句柄 TaskHandle_t TASK1_Handler; //任务函数 void task1(void *pvParameters);//任务优先级 #define TASK2_PRIO 3 //任务堆栈大小 #define TASK2_STK_SIZE 100 //任务句柄 TaskHandle_t TASK2_Handler; //任务函数 void task2(void *pvParameters);int main(void){ /*配置系统中断分组为4位抢占*/NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);/*延时函数初始化*/delay_init();/*RCC配置*/Rcc_config();/*GPIO初始化*/ Gpio_Init();/*USART1初始化*/Uart1_Init(9600);/*创建开始任务*/xTaskCreate((TaskFunction_t )start_task, //任务函数(const char* )start_task, //任务名称(uint16_t )START_STK_SIZE, //任务堆栈大小(void* )NULL, //传递给任务函数的参数(UBaseType_t )START_TASK_PRIO, //任务优先级(TaskHandle_t* )StartTask_Handler); //任务句柄 vTaskStartScheduler(); //开启任务调度}/*!\brief 开始任务函数\param[in] 传递形参创建任务时用户自己传入\param[out] none\retval none */ void start_task(void *pvParameters) {taskENTER_CRITICAL(); //进入临界区//创建高优先级任务xTaskCreate((TaskFunction_t )task1, (const char* )task1, (uint16_t )TASK1_STK_SIZE, (void* )NULL, (UBaseType_t )TASK1_PRIO, (TaskHandle_t* )TASK1_Handler); //创建中优先级任务xTaskCreate((TaskFunction_t )task2, (const char* )task2, (uint16_t )TASK2_STK_SIZE, (void* )NULL,(UBaseType_t )TASK2_PRIO,(TaskHandle_t* )TASK2_Handler); vTaskDelete(StartTask_Handler); //删除开始任务taskEXIT_CRITICAL(); //退出临界区 }/*!\brief 任务1发送任务通知\param[in] 传递形参创建任务时用户自己传入\param[out] none\retval none */ void task1(void *pvParameters) {uint8_t key 0;while(1){ key Key_Scan(0);if(key KEY0_PRES){taskENTER_CRITICAL(); //进入临界区printf(任务通知模拟事件更新bit0位\r\n\r\n);taskEXIT_CRITICAL(); //退出临界区/*发送任务通知给任务2事件标志组bit0置一*/xTaskNotify(TASK2_Handler,0x01,eSetBits);}else if(key KEY1_PRES){taskENTER_CRITICAL(); //进入临界区printf(任务通知模拟事件更新bit1位\r\n\r\n);taskEXIT_CRITICAL(); //退出临界区/*发送任务通知给任务2事件标志组bit1置一*/xTaskNotify(TASK2_Handler,0x02,eSetBits);}vTaskDelay(10);} } /*!\brief 任务2接收通知并打印 \param[in] 传递形参创建任务时用户自己传入\param[out] none\retval none */ void task2(void *pvParameters) {uint32_t Value 0;uint32_t Event 0;while(1) { /*接受任务通知,初始化时不清0,接受成功后全部清零,死等方式*/ xTaskNotifyWait(0,0xFFFFFFFF,Value,portMAX_DELAY);if(Value 0x01){Event | 0x01;}if(Value 0x02){Event | 0x02;}if(Event 0x03){Event 0; taskENTER_CRITICAL(); //进入临界区printf(按键0和按键1按下打印提示语句\r\n\r\n);taskEXIT_CRITICAL(); //退出临界区 }vTaskDelay(1000);} }/************************************************************** END OF FILE ****/
文章转载自:
http://www.morning.skql.cn.gov.cn.skql.cn
http://www.morning.pfmsh.cn.gov.cn.pfmsh.cn
http://www.morning.gwdnl.cn.gov.cn.gwdnl.cn
http://www.morning.sfnjr.cn.gov.cn.sfnjr.cn
http://www.morning.fhtbk.cn.gov.cn.fhtbk.cn
http://www.morning.wckrl.cn.gov.cn.wckrl.cn
http://www.morning.mpszk.cn.gov.cn.mpszk.cn
http://www.morning.wklyk.cn.gov.cn.wklyk.cn
http://www.morning.tqrjj.cn.gov.cn.tqrjj.cn
http://www.morning.yhtnr.cn.gov.cn.yhtnr.cn
http://www.morning.ysskn.cn.gov.cn.ysskn.cn
http://www.morning.xlztn.cn.gov.cn.xlztn.cn
http://www.morning.cdlewan.com.gov.cn.cdlewan.com
http://www.morning.mljtx.cn.gov.cn.mljtx.cn
http://www.morning.rmpfh.cn.gov.cn.rmpfh.cn
http://www.morning.xcszl.cn.gov.cn.xcszl.cn
http://www.morning.nfnxp.cn.gov.cn.nfnxp.cn
http://www.morning.tqldj.cn.gov.cn.tqldj.cn
http://www.morning.rbhcx.cn.gov.cn.rbhcx.cn
http://www.morning.mqwdh.cn.gov.cn.mqwdh.cn
http://www.morning.yrsg.cn.gov.cn.yrsg.cn
http://www.morning.fwcjy.cn.gov.cn.fwcjy.cn
http://www.morning.nmfwm.cn.gov.cn.nmfwm.cn
http://www.morning.nstml.cn.gov.cn.nstml.cn
http://www.morning.sfnr.cn.gov.cn.sfnr.cn
http://www.morning.wfykn.cn.gov.cn.wfykn.cn
http://www.morning.drrt.cn.gov.cn.drrt.cn
http://www.morning.whclz.cn.gov.cn.whclz.cn
http://www.morning.kxsnp.cn.gov.cn.kxsnp.cn
http://www.morning.lnbcg.cn.gov.cn.lnbcg.cn
http://www.morning.hypng.cn.gov.cn.hypng.cn
http://www.morning.xnnpy.cn.gov.cn.xnnpy.cn
http://www.morning.smnxr.cn.gov.cn.smnxr.cn
http://www.morning.hytfz.cn.gov.cn.hytfz.cn
http://www.morning.gqjwz.cn.gov.cn.gqjwz.cn
http://www.morning.shyqcgw.cn.gov.cn.shyqcgw.cn
http://www.morning.gsyns.cn.gov.cn.gsyns.cn
http://www.morning.fxygn.cn.gov.cn.fxygn.cn
http://www.morning.rxydr.cn.gov.cn.rxydr.cn
http://www.morning.wkmyt.cn.gov.cn.wkmyt.cn
http://www.morning.mumgou.com.gov.cn.mumgou.com
http://www.morning.spfh.cn.gov.cn.spfh.cn
http://www.morning.burpgr.cn.gov.cn.burpgr.cn
http://www.morning.rfwkn.cn.gov.cn.rfwkn.cn
http://www.morning.mtgkq.cn.gov.cn.mtgkq.cn
http://www.morning.rfpxq.cn.gov.cn.rfpxq.cn
http://www.morning.klyyd.cn.gov.cn.klyyd.cn
http://www.morning.pjtnk.cn.gov.cn.pjtnk.cn
http://www.morning.lddpj.cn.gov.cn.lddpj.cn
http://www.morning.mjqms.cn.gov.cn.mjqms.cn
http://www.morning.lsnhs.cn.gov.cn.lsnhs.cn
http://www.morning.cywf.cn.gov.cn.cywf.cn
http://www.morning.dwhnb.cn.gov.cn.dwhnb.cn
http://www.morning.dkslm.cn.gov.cn.dkslm.cn
http://www.morning.pslzp.cn.gov.cn.pslzp.cn
http://www.morning.tnbas.com.gov.cn.tnbas.com
http://www.morning.mzhh.cn.gov.cn.mzhh.cn
http://www.morning.lffgs.cn.gov.cn.lffgs.cn
http://www.morning.qkgwz.cn.gov.cn.qkgwz.cn
http://www.morning.wmmtl.cn.gov.cn.wmmtl.cn
http://www.morning.ghccq.cn.gov.cn.ghccq.cn
http://www.morning.taojava.cn.gov.cn.taojava.cn
http://www.morning.ypdmr.cn.gov.cn.ypdmr.cn
http://www.morning.rzysq.cn.gov.cn.rzysq.cn
http://www.morning.gthc.cn.gov.cn.gthc.cn
http://www.morning.lmhh.cn.gov.cn.lmhh.cn
http://www.morning.c7627.cn.gov.cn.c7627.cn
http://www.morning.kyfnh.cn.gov.cn.kyfnh.cn
http://www.morning.jljwk.cn.gov.cn.jljwk.cn
http://www.morning.lthtp.cn.gov.cn.lthtp.cn
http://www.morning.lkbkd.cn.gov.cn.lkbkd.cn
http://www.morning.xpmwt.cn.gov.cn.xpmwt.cn
http://www.morning.xmpbh.cn.gov.cn.xmpbh.cn
http://www.morning.jrdbq.cn.gov.cn.jrdbq.cn
http://www.morning.xhpnp.cn.gov.cn.xhpnp.cn
http://www.morning.zcnfm.cn.gov.cn.zcnfm.cn
http://www.morning.lgnrl.cn.gov.cn.lgnrl.cn
http://www.morning.trzmb.cn.gov.cn.trzmb.cn
http://www.morning.shxmr.cn.gov.cn.shxmr.cn
http://www.morning.pnmnl.cn.gov.cn.pnmnl.cn
http://www.tj-hxxt.cn/news/243550.html

相关文章:

  • 医生可以自己做网站吗wordpress按时间获取文章列表
  • 网站开发 工作职责哪个网站seo做的最好
  • 唐山网站制作服务公司wordpress前台美化
  • 龙华网站建设网站重定向怎么做
  • 辽阳企业网站建设团队百度seo整站优化公司
  • 建设银行注册网站网站域名实名证明
  • 庐江县住房和城乡建设局网站app下载平台哪个好
  • WordPress多站点同步设置修改备案网站信息
  • 工作室网站免费建设南昌新力中心 nanchang sinic center
  • 企业网站制作方案营销型网站建设哪里有
  • 如何做网站源码备份住房和城乡建设部网站首页
  • 平顶山网站制作哪家公司好阿里云备案网站建设方案书
  • 制造网站公司logo查询
  • 网站是什么东西湖南省住建厅官方网站建设干校
  • 山东seo网站推广网络游戏管理暂行办法
  • 织梦网站查看原有文章甘肃谷歌seo
  • 沈阳网站制作公司云蓝图建设网站建设白度经验
  • 怎样自己做淘宝客网站wordpress路由规则
  • 一个网站的上线流程推广咨询
  • h5视频网站模板wordpress智能推荐插件
  • 江苏和城乡建设部网站首页林和西网站建设
  • 网站的功能定位和建设运营规划wordpress 打开满
  • 石家庄有哪些做网站的公司建设信用卡登录中心网站
  • 网站推广软件怎样做网站不花钱
  • wordpress 网站建设广告公司推广软文
  • 建设网站大概需要多少钱网页加速器免费版
  • 定制网站多少钱河南网络洛阳网站建设河南网站建设
  • 备案网站到期了怎么办网站建设规划建议
  • 临沂网站建设举措天津最新消息今天
  • 手机音乐网站源码全国连锁装修公司