中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

網(wǎng)站 微信小程序怎么做百度指數(shù)搜索

網(wǎng)站 微信小程序怎么做,百度指數(shù)搜索,網(wǎng)站seo如何做,三室二廳20萬(wàn)全款DAC 輸出三角波實(shí)驗(yàn) 本實(shí)驗(yàn)我們來(lái)學(xué)習(xí)使用如何讓 DAC 輸出三角波,DAC 初始化部分還是用 DAC 輸出實(shí)驗(yàn) 的,所以做本實(shí)驗(yàn)的前提是先學(xué)習(xí) DAC 輸出實(shí)驗(yàn)。 使用 DAC 輸出三角波,通過(guò) KEY0/KEY1 兩個(gè)按鍵,控制 DAC1 的通道 1 輸出兩種…

DAC 輸出三角波實(shí)驗(yàn)

本實(shí)驗(yàn)我們來(lái)學(xué)習(xí)使用如何讓 DAC 輸出三角波,DAC 初始化部分還是用 DAC 輸出實(shí)驗(yàn) 的,所以做本實(shí)驗(yàn)的前提是先學(xué)習(xí) DAC 輸出實(shí)驗(yàn)。

使用 DAC 輸出三角波,通過(guò) KEY0/KEY1 兩個(gè)按鍵,控制 DAC1 的通道 1 輸出兩種三角 波,需要通過(guò)示波器接 PA4 進(jìn)行觀察。LED0 閃爍,提示程序運(yùn)行。

我們只需要把示波器的探頭接到 DAC1 通道 1(PA4)引腳,就可以在示波器上顯示 DAC 輸出的波形。?

#include "./BSP/DAC/dac.h"
#include "./SYSTEM/delay/delay.h"DAC_HandleTypeDef g_dac_handle;/* DAC初始化函數(shù) */
void dac_init(void)
{DAC_ChannelConfTypeDef dac_ch_conf = {0};g_dac_handle.Instance = DAC;HAL_DAC_Init(&g_dac_handle);/* 初始化 DAC */dac_ch_conf.DAC_Trigger = DAC_TRIGGER_NONE;/* 不使用觸發(fā)功能,(自動(dòng)模式) */dac_ch_conf.DAC_OutputBuffer = DAC_OUTPUTBUFFER_DISABLE;/* DAC1 輸出緩沖關(guān)閉 */HAL_DAC_ConfigChannel(&g_dac_handle, &dac_ch_conf, DAC_CHANNEL_1);HAL_DAC_Start(&g_dac_handle, DAC_CHANNEL_1);/* 開(kāi)啟 DAC 通道 1 */
}/* DAC MSP底層初始化函數(shù) */
void HAL_DAC_MspInit(DAC_HandleTypeDef *hdac)
{if(hdac->Instance == DAC){GPIO_InitTypeDef gpio_init_struct = {0};__HAL_RCC_DAC_CLK_ENABLE();/* 使能 DAC1 的時(shí)鐘 */__HAL_RCC_GPIOA_CLK_ENABLE();;/* 使能 DAC OUT1/2 的 IO 口時(shí)鐘(都在 PA 口,PA4/PA5) */gpio_init_struct.Pin = GPIO_PIN_4;gpio_init_struct.Mode = GPIO_MODE_ANALOG;HAL_GPIO_Init(GPIOA, &gpio_init_struct);}
}/*** @brief       設(shè)置DAC_OUT1輸出三角波*   @note      輸出頻率 ≈ 1000 / (dt * samples) Khz, 不過(guò)在dt較小的時(shí)候,比如小于5us時(shí), 由于delay_us*              本身就不準(zhǔn)了(調(diào)用函數(shù),計(jì)算等都需要時(shí)間,延時(shí)很小的時(shí)候,這些時(shí)間會(huì)影響到延時(shí)), 頻率會(huì)偏小.* * @param       maxval : 最大值(0 < maxval < 4096), (maxval + 1)必須大于等于samples/2* @param       dt     : 每個(gè)采樣點(diǎn)的延時(shí)時(shí)間(單位: us)* @param       samples: 采樣點(diǎn)的個(gè)數(shù), samples必須小于等于(maxval + 1) * 2 , 且maxval不能等于0* @param       n      : 輸出波形個(gè)數(shù),0~65535** @retval      無(wú)*/
void dac_triangular_wave(uint16_t maxval, uint16_t dt, uint16_t samples, uint16_t n)
{uint16_t i, j;float incval;                           /* 遞增量 */float Curval;                           /* 當(dāng)前值 */if((maxval + 1) <= samples)return ;     /* 數(shù)據(jù)不合法 */incval = (maxval + 1) / (samples / 2);  /* 計(jì)算遞增量 */for(j = 0; j < n; j++){Curval = 0;HAL_DAC_SetValue(&g_dac_handle, DAC_CHANNEL_1, DAC_ALIGN_12B_R, Curval);    /* 先輸出0 */for(i = 0; i < (samples / 2); i++)  /* 輸出上升沿 */{Curval  +=  incval;             /* 新的輸出值 */HAL_DAC_SetValue(&g_dac_handle, DAC_CHANNEL_1, DAC_ALIGN_12B_R, Curval);delay_us(dt);}for(i = 0; i < (samples / 2); i++)  /* 輸出下降沿 */{Curval  -=  incval;             /* 新的輸出值 */HAL_DAC_SetValue(&g_dac_handle, DAC_CHANNEL_1, DAC_ALIGN_12B_R, Curval);delay_us(dt);}}
}

該函數(shù)用于設(shè)置 DAC 通道 1 輸出三角波,輸出頻率 ≈ 1000 / (dt * samples) Khz,形參含 義在源碼已經(jīng)有詳細(xì)注釋。該函數(shù)中,我們使用 HAL_DAC_SetValue 函數(shù)來(lái)設(shè)置 DAC 的輸出 值,這樣得到的三角波在示波器上可以看到。如果有跳動(dòng)現(xiàn)象(不平穩(wěn)),是正常的,因?yàn)檎{(diào)用 函數(shù),計(jì)算等都需要時(shí)間,這樣就會(huì)導(dǎo)致輸出的波形是不太穩(wěn)定的。越高性能的 MCU,得到的 波形會(huì)越穩(wěn)定。而且用 HAL 庫(kù)函數(shù)操作效率沒(méi)有直接操作寄存器高,所以可以像寄存器版本實(shí) 驗(yàn)一樣,直接操作 DHR12R1 寄存器,得到的波形會(huì)相對(duì)穩(wěn)定些。

由于使用 HAL 庫(kù)的函數(shù),CPU 花費(fèi)的時(shí)間會(huì)更長(zhǎng)(因?yàn)橹噶钭兌嗔?#xff09;,在時(shí)間精度要求比 較高的應(yīng)用,就不適合用 HAL 庫(kù)函數(shù)來(lái)操作了,這一點(diǎn)希望大家明白。所以學(xué) STM32 不是說(shuō) 只要會(huì) HAL 庫(kù)就可以了,對(duì)寄存器也是需要有一定的理解,最好是熟悉。這里用 HAL 庫(kù)操作 只是為了演示怎么使用 HAL 庫(kù)的相關(guān)函數(shù)。

#include "./SYSTEM/sys/sys.h"
#include "./SYSTEM/usart/usart.h"
#include "./SYSTEM/delay/delay.h"
#include "./BSP/LED/led.h"
#include "./BSP/LCD/lcd.h"
#include "./BSP/ADC/adc.h"
#include "./BSP/DAC/dac.h"
#include "./BSP/KEY/key.h"int main(void)
{uint8_t t = 0; uint8_t key;HAL_Init();                         /* 初始化 HAL 庫(kù) */sys_stm32_clock_init(RCC_PLL_MUL9); /* 設(shè)置時(shí)鐘, 72Mhz */delay_init(72);                     /* 延時(shí)初始化 */usart_init(115200);                 /* 傳口初始化 */led_init();                         /* LED初始化 */lcd_init();                         /* LCD初始化 */adc_init();                         /* ADC初始化 */dac_init();                         /* DAC初始化 */key_init();                         /* KEY初始化 */lcd_show_string(30,  50, 200, 16, 16, "STM32", RED);lcd_show_string(30,  70, 200, 16, 16, "DAC Triangular WAVE TEST", RED);lcd_show_string(30,  90, 200, 16, 16, "ATOM@ALIENTEK", RED);lcd_show_string(30, 110, 200, 16, 16, "KEY0:Wave1  KEY1:Wave2", RED);lcd_show_string(30, 130, 200, 16, 16, "DAC None", BLUE); /* 提示無(wú)輸出 */while(1){t++;key = key_scan(0);                           /* 按鍵掃描 */if (key == KEY0_PRES)                        /* 高采樣率 , 約1Khz波形 */{lcd_show_string(30, 130, 200, 16, 16, "DAC Wave1 ", BLUE);dac_triangular_wave(4095, 5, 2000, 100); /* 幅值4095, 采樣點(diǎn)間隔5us, 2000個(gè)采樣點(diǎn), 100個(gè)波形 */lcd_show_string(30, 130, 200, 16, 16, "DAC None  ", BLUE);}else if (key == KEY1_PRES)                   /* 低采樣率 , 約1Khz波形 */{lcd_show_string(30, 130, 200, 16, 16, "DAC Wave2 ", BLUE);dac_triangular_wave(4095, 500, 20, 100); /* 幅值4095, 采樣點(diǎn)間隔500us, 20個(gè)采樣點(diǎn), 100個(gè)波形 */lcd_show_string(30, 130, 200, 16, 16, "DAC None  ", BLUE);}if (t == 10)                                 /* 定時(shí)時(shí)間到了 */{LED0_TOGGLE();                           /* LED0閃爍 */t = 0;}delay_ms(10);}
}

該部分代碼功能是,按下 KEY0 后,DAC 輸出三角波 1,按下 KEY1 后,DAC 輸出三角波 2,將 dac_triangular_wave 的形參代入公式:輸出頻率 ≈ 1000 / (dt * samples) KHz,得到三角 波 1 和三角波 2 的頻率都是 0.1KHz。

下載代碼后,可以看到 LED0 不停的閃爍,提示程序已經(jīng)在運(yùn)行了。LCD 顯示如圖 33.3.4.1 所示:

沒(méi)有按下任何按鍵之前,LCD 屏顯示 DAC None,當(dāng)按下 KEY0 后,DAC 輸出三角波 1, LCD 屏顯示 DAC Wave1 ,三角波 1 輸出完成后 LCD 屏繼續(xù)顯示 DAC None,當(dāng)按下 KEY1后,DAC 輸出三角波 2,LCD 屏顯示 DAC Wave2,三角波 2 輸出完成后 LCD 屏繼續(xù)顯示 DAC None。

其中三角波 1 和三角波 2 在示波器的顯示情況如下圖所示:

由上面兩副測(cè)試圖可以知道,三角波 1 的頻率是 64.5Hz,三角波 2 的頻率是 99.5Hz。三角 波 2 基本接近我們算出來(lái)的結(jié)果 0.1KHz,三角波 1 有較大誤差,在介紹 dac_triangular_wave 函 數(shù)時(shí)也說(shuō)了原因,加上三角波 1 的采樣率比較高,所以誤差就會(huì)比較大。?

DAC 輸出正弦波實(shí)驗(yàn)

本實(shí)驗(yàn)我們來(lái)學(xué)習(xí)使用如何讓 DAC 輸出正弦波。實(shí)驗(yàn)將用定時(shí)器 7 來(lái)觸發(fā) DAC 進(jìn)行轉(zhuǎn)換 輸出正弦波,以 DMA 傳輸數(shù)據(jù)的方式。

使用 DAC 輸出正弦波,通過(guò) KEY0/KEY1 兩個(gè)按鍵,控制 DAC1 的通道 1 輸出兩種正弦 波,需要通過(guò)示波器接 PA4 進(jìn)行觀察。LED0 閃爍,提示程序運(yùn)行。

我們只需要把示波器的探頭接到 DAC1 通道 1(PA4)引腳,就可以在示波器上顯示 DAC 輸出的波形。PA4 在 P7 已經(jīng)引出,硬件連接如圖 33.4.2.1 所示:

HAL庫(kù)函數(shù)?

?代碼

#include "./BSP/DAC/dac.h"DMA_HandleTypeDef g_dma_dac_handle;
DAC_HandleTypeDef g_dac_dma_handle;extern uint16_t g_dac_sin_buf[4096];           /* 發(fā)送數(shù)據(jù)緩沖區(qū) *//* DAC DMA輸出波形初始化函數(shù) */
void dac_dma_wave_init(void)
{DAC_ChannelConfTypeDef dac_ch_conf = {0};__HAL_RCC_DMA2_CLK_ENABLE();/* DMA2 時(shí)鐘使能 */g_dma_dac_handle.Instance = DMA2_Channel3;/* 設(shè)置 DMA 通道 */g_dma_dac_handle.Init.Direction = DMA_MEMORY_TO_PERIPH;/* 從存儲(chǔ)器到外設(shè)模式 */g_dma_dac_handle.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;/* 存儲(chǔ)器數(shù)據(jù)長(zhǎng)度:16 位 */g_dma_dac_handle.Init.MemInc = DMA_MINC_ENABLE;/* 存儲(chǔ)器增量模式 */g_dma_dac_handle.Init.Mode = DMA_CIRCULAR;/* 循環(huán)模式 */g_dma_dac_handle.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;/* 外設(shè)數(shù)據(jù)長(zhǎng)度:16 位 */g_dma_dac_handle.Init.PeriphInc = DMA_PINC_DISABLE;/* 外設(shè)非增量模式 */g_dma_dac_handle.Init.Priority = DMA_PRIORITY_HIGH;/* 優(yōu)先級(jí) */HAL_DMA_Init(&g_dma_dac_handle);/* 初始化 DMA */__HAL_LINKDMA(&g_dac_dma_handle, DMA_Handle1, g_dma_dac_handle);/* DMA 句柄與 DAC 句柄關(guān)聯(lián) */g_dac_dma_handle.Instance = DAC;HAL_DAC_Init(&g_dac_dma_handle);dac_ch_conf.DAC_Trigger = DAC_TRIGGER_T7_TRGO;/* 使用 TIM7 TRGO 事件觸發(fā) */dac_ch_conf.DAC_OutputBuffer = DAC_OUTPUTBUFFER_DISABLE;/* DAC1 輸出緩沖關(guān)閉 */HAL_DAC_ConfigChannel(&g_dac_dma_handle, &dac_ch_conf, DAC_CHANNEL_1);/* DAC 通道 1 配置 *//* 配置 DMA 傳輸參數(shù) */HAL_DMA_Start(&g_dma_dac_handle, (uint32_t)g_dac_sin_buf, (uint32_t)&DAC->DHR12R1, 0);
}/* DAC MSP底層初始化函數(shù) */
void HAL_DAC_MspInit(DAC_HandleTypeDef *hdac)
{if(hdac->Instance == DAC){GPIO_InitTypeDef gpio_init_struct = {0};__HAL_RCC_DAC_CLK_ENABLE();/* 使能 DAC1 的時(shí)鐘 */__HAL_RCC_GPIOA_CLK_ENABLE();/* DAC 通道引腳端口時(shí)鐘使能 *//* STM32 單片機(jī), 總是 PA4=DAC1_OUT1, PA5=DAC1_OUT2 */gpio_init_struct.Pin = GPIO_PIN_4;gpio_init_struct.Mode = GPIO_MODE_ANALOG;/* 模擬 */HAL_GPIO_Init(GPIOA, &gpio_init_struct);}
}void dac_dma_wave_enable(uint16_t cndtr, uint16_t arr, uint16_t psc)
{TIM_HandleTypeDef tim7_handle = {0};TIM_MasterConfigTypeDef tim7_master_config = {0};__HAL_RCC_TIM7_CLK_ENABLE();/* TIM7 時(shí)鐘使能 */tim7_handle.Instance = TIM7;/* 選擇定時(shí)器 7 */tim7_handle.Init.Prescaler = psc;/* 預(yù)分頻 */tim7_handle.Init.Period = arr;/* 自動(dòng)裝載值 */tim7_handle.Init.CounterMode = TIM_COUNTERMODE_UP; /* 遞增計(jì)數(shù)器 */HAL_TIM_Base_Init(&tim7_handle);tim7_master_config.MasterOutputTrigger = TIM_TRGO_UPDATE;/* 定時(shí)器更新事件用于觸發(fā) */tim7_master_config.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;HAL_TIMEx_MasterConfigSynchronization(&tim7_handle, &tim7_master_config);/* 配置定時(shí)器 7 的更新事件觸發(fā) DAC 轉(zhuǎn)換 */HAL_TIM_Base_Start(&tim7_handle);/* 啟動(dòng)定時(shí)器 7 */HAL_DAC_Stop_DMA(&g_dac_dma_handle, DAC_CHANNEL_1);/* 先停止之前的傳輸 */HAL_DAC_Start_DMA(&g_dac_dma_handle, DAC_CHANNEL_1, (uint32_t *)g_dac_sin_buf, cndtr, DAC_ALIGN_12B_R);
}

該函數(shù)用于初始化 DAC 用 DMA 的方式輸出正弦波。本函數(shù)用到的 API 函數(shù)起前面都介 紹過(guò),請(qǐng)結(jié)合前面介紹過(guò)的相關(guān)內(nèi)容來(lái)理解源碼。這里值得注意的是我們是采用定時(shí)器 7 觸發(fā) DAC 進(jìn)行轉(zhuǎn)換輸出的。

該函數(shù)用于使能波形輸出,利用定時(shí)器 7 的更新事件來(lái)觸發(fā) DAC 轉(zhuǎn)換輸出。使能定時(shí)器 7 的時(shí)鐘后,調(diào)用 HAL_TIMEx_MasterConfigSynchronization 函數(shù)配置 TIM7 選擇更新事件作為觸 發(fā)輸出 (TRGO),然后調(diào)用 HAL_DAC_Stop_DMA 函數(shù)停止 DAC 轉(zhuǎn)換以及 DMA 傳輸,最后 再調(diào)用 HAL_DAC_Start_DMA 函數(shù)重新配置并啟動(dòng) DAC 和 DMA。

#include "./SYSTEM/sys/sys.h"
#include "./SYSTEM/usart/usart.h"
#include "./SYSTEM/delay/delay.h"
#include "./BSP/LED/led.h"
#include "./BSP/LCD/lcd.h"
#include "./BSP/ADC/adc.h"
#include "./BSP/DAC/dac.h"
#include "./BSP/KEY/key.h"
#include "math.h"uint16_t g_dac_sin_buf[4096];           /* 發(fā)送數(shù)據(jù)緩沖區(qū) *//*** @brief       產(chǎn)生正弦波函序列*   @note      需保證: maxval > samples/2** @param       maxval : 最大值(0 < maxval < 2048)* @param       samples: 采樣點(diǎn)的個(gè)數(shù)** @retval      無(wú)*/
void dac_creat_sin_buf(uint16_t maxval, uint16_t samples)
{uint8_t i;float inc = (2 * 3.1415962) / samples; /* 計(jì)算增量(一個(gè)周期DAC_SIN_BUF個(gè)點(diǎn))*/float outdata = 0;for (i = 0; i < samples; i++){outdata = maxval * (1 + sin(inc * i)); /* 計(jì)算以dots個(gè)點(diǎn)為周期的每個(gè)點(diǎn)的值,放大maxval倍,并偏移到正數(shù)區(qū)域 */if (outdata > 4095)outdata = 4095; /* 上限限定 *///printf("%f\r\n",outdata);g_dac_sin_buf[i] = outdata;}
}int main(void)
{uint8_t t = 0; uint8_t key;HAL_Init();                         /* 初始化 HAL 庫(kù) */sys_stm32_clock_init(RCC_PLL_MUL9); /* 設(shè)置時(shí)鐘, 72Mhz */delay_init(72);                     /* 延時(shí)初始化 */usart_init(115200);                 /* 傳口初始化 */led_init();                         /* LED初始化 */lcd_init();                         /* LCD初始化 */key_init();                         /* KEY初始化 *//* 初始化DAC通道1 DMA波形輸出 */dac_dma_wave_init();lcd_show_string(30,  50, 200, 16, 16, "STM32", RED);lcd_show_string(30,  70, 200, 16, 16, "DAC DMA Sine WAVE TEST", RED);lcd_show_string(30,  90, 200, 16, 16, "ATOM@ALIENTEK", RED);lcd_show_string(30, 110, 200, 16, 16, "KEY0:3Khz  KEY1:30Khz", RED);dac_creat_sin_buf(2048, 100);dac_dma_wave_enable(100, 10 - 1, 72 - 1);/* 100Khz觸發(fā)頻率, 100個(gè)點(diǎn), 得到1Khz的正弦波 */while(1){t++;key = key_scan(0);                           /* 按鍵掃描 */if (key == KEY0_PRES)                               /* 高采樣率 , 約1Khz波形 */{dac_creat_sin_buf(2048, 100);dac_dma_wave_enable(100, 10 - 1, 24 - 1);       /* 300Khz觸發(fā)頻率, 100個(gè)點(diǎn), 得到最高3KHz的正弦波. */}else if (key == KEY1_PRES)                          /* 低采樣率 , 約1Khz波形 */{dac_creat_sin_buf(2048, 10);dac_dma_wave_enable(10, 10 - 1, 24 - 1);        /* 300Khz觸發(fā)頻率, 10個(gè)點(diǎn), 可以得到最高30KHz的正弦波. */}if (t == 40)        /* 定時(shí)時(shí)間到了 */{LED0_TOGGLE();  /* LED0閃爍 */t = 0;}delay_ms(5);}
}

dac_dma_wave_init 函數(shù)初始化 DAC 通道 1,并指定 DMA 搬運(yùn)的數(shù)據(jù)的開(kāi)始地址和目標(biāo) 地址。dac_creat_sin_buf 函數(shù)用于產(chǎn)生正弦波序列,并保存在 g_dac_sin_buf 數(shù)組中,供給 DAC 轉(zhuǎn)換。在進(jìn)入wilhe(1)循環(huán)之前,dac_dma_wave_enable函數(shù)默認(rèn)配置DAC的采樣點(diǎn)個(gè)數(shù)時(shí)100, 并配置定時(shí)器 7 的溢出頻率為 100KHz。這樣就可以輸出 1KHz 的正弦波。下面給大家解釋一下 為什么是輸出 1KHz 的正弦波?

定時(shí)器 7 的溢出頻率為 100KHz,不記得怎么計(jì)算的朋友,請(qǐng)回顧基本定時(shí)器的相關(guān)內(nèi)容, 這里直接把公式列出:Tout= ((arr+1)*(psc+1))/Tclk

看到 dac_dma_wave_enable(100, 10 - 1, 72 - 1);這個(gè)語(yǔ)句,第二個(gè)形參是自動(dòng)重裝載值,第 三個(gè)形參是分頻系數(shù),那么代入公式,可得:Tout= ((arr+1)*(psc+1))/Tclk= ((9+1)*(71+1))/ 72000000= 0.00001s得到定時(shí)器的更新事件周期是 0.00001 秒,即更新事件頻率為 100KHz,也就得到 DAC 輸 出觸發(fā)頻率為 100KHz。再結(jié)合總一個(gè)正弦波共有 100 個(gè)采樣點(diǎn),就可以得到正弦波的頻率為 100KHz/100 = 1KHz。

知道了正弦波的頻率怎么來(lái)的,下面代碼中,按下按鍵 KEY0,得到 3KHz 的正弦波,按下 按鍵 KEY1,得到 30KHz 的正弦波,計(jì)算方法都一樣的。

實(shí)驗(yàn)現(xiàn)象

沒(méi)有按下任何按鍵之前,默認(rèn)輸出 1KHz(100 個(gè)采樣點(diǎn))的正弦波,如下圖所示:

當(dāng)按下 KEY0 后,DAC 輸出 3KHz(100 個(gè)采樣點(diǎn))的正弦波,如下圖所示:?當(dāng)按下 KEY1 后,DAC 輸出 30KHz(10 個(gè)采樣點(diǎn))的正弦波,如下圖所示:

http://www.risenshineclean.com/news/65638.html

相關(guān)文章:

  • 北龍中網(wǎng) 可信網(wǎng)站驗(yàn)證 費(fèi)用百度手機(jī)怎么刷排名多少錢(qián)
  • 招聘網(wǎng)站分析如何做網(wǎng)店推廣方案
  • 網(wǎng)站續(xù)費(fèi)怎么做分錄百度seo關(guān)鍵詞排名優(yōu)化
  • 如何做視頻網(wǎng)站技術(shù)優(yōu)化大師軟件下載
  • 網(wǎng)站建設(shè)綿陽(yáng)網(wǎng)絡(luò)營(yíng)銷(xiāo)品牌案例
  • 專門(mén)做物理的網(wǎng)站網(wǎng)絡(luò)營(yíng)銷(xiāo)的概念和特點(diǎn)是什么
  • 網(wǎng)站后臺(tái)登陸不進(jìn)去是怎么回事網(wǎng)絡(luò)營(yíng)銷(xiāo)手段有哪四種
  • 網(wǎng)站上的logo怎么做有哪些網(wǎng)絡(luò)推廣平臺(tái)
  • 網(wǎng)站開(kāi)發(fā)的響應(yīng)式和兼容性問(wèn)題seo優(yōu)化是利用規(guī)則提高排名
  • 如何做電子書(shū)網(wǎng)站全網(wǎng)營(yíng)銷(xiāo)系統(tǒng)是不是傳銷(xiāo)
  • 南京網(wǎng)站制作有限公司網(wǎng)站交易網(wǎng)
  • 做ppt找圖片在哪個(gè)網(wǎng)站重慶seo代理
  • 微信平臺(tái)的微網(wǎng)站怎么做網(wǎng)站關(guān)鍵詞優(yōu)化培訓(xùn)
  • 網(wǎng)站上的鏈接怎么做的有哪些搜索引擎網(wǎng)站
  • 網(wǎng)站建設(shè)演示ppt搜索引擎營(yíng)銷(xiāo)ppt
  • 網(wǎng)站擁有權(quán)亞馬遜seo推廣
  • 公司公司網(wǎng)站建設(shè)公司平臺(tái)推廣銷(xiāo)售話術(shù)
  • 網(wǎng)站統(tǒng)計(jì)源碼google關(guān)鍵詞seo
  • 長(zhǎng)沙做網(wǎng)站的公司有哪些百度代運(yùn)營(yíng)
  • 贛州seo快速霸屏短視頻優(yōu)化
  • 購(gòu)物幫–做特惠的導(dǎo)購(gòu)網(wǎng)站磁力bt種子搜索神器
  • 網(wǎng)站不能粘貼怎么做全國(guó)各城市疫情高峰感染進(jìn)度
  • 17網(wǎng)站一起做網(wǎng)店普寧池尾雅晨做外貿(mào)有哪些網(wǎng)站平臺(tái)
  • 怎么做網(wǎng)站和服務(wù)器嗎百度網(wǎng)絡(luò)營(yíng)銷(xiāo)中心
  • 微信高端網(wǎng)站建設(shè)中國(guó)國(guó)家培訓(xùn)網(wǎng)官網(wǎng)
  • 北京網(wǎng)站優(yōu)化步驟百度電腦版下載官方
  • 衡水精品網(wǎng)站建設(shè)報(bào)價(jià)seo網(wǎng)站快速排名
  • 做一個(gè)網(wǎng)站需要多久網(wǎng)絡(luò)推廣崗位職責(zé)和任職要求
  • 做訂餐網(wǎng)站數(shù)據(jù)庫(kù)應(yīng)該有哪些表edm營(yíng)銷(xiāo)
  • 合江做網(wǎng)站網(wǎng)推廣公司