色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

按這個步驟 STM32即可完美控制 NeoPixels

得捷電子DigiKey ? 來源:未知 ? 2023-10-12 16:05 ? 次閱讀
Q A &

問:玩轉STM32 - 使用 STM32 來控制 NeoPixels

目前,諸如ArduinoFeather等高級開發平臺已經提供了出色的支持,可以通過易于使用的庫和普遍使用的示例代碼與NeoPixelLE?D燈帶矩陣等相連接。然而,更高級的平臺(例如STM32 開發板)通常缺乏相同水平的支持。因此,希望將NeoPixels整合到項目中的 開發人員需要全面了解NeoPixel通信協議以及如何克服它所帶來的挑戰。

wKgaomUt2iSAGmG6AATc_qP0mvo000.gif

NeoPixels

Adafruit推出的極受歡迎的可尋址全彩LED燈“NeoPixels”系列分為RGB和RGBW兩個種類。盡管二者都將紅、綠和藍色LED與驅動器芯片相集成,但RGBW組件還集成了第四個純白色的LED。可以使用類似的單線串行接口來控制這兩種類型的NeoPixel,其時間值和數據結構僅存在微小的差異。

WS2812

RGB NeoPixels實際上是WS2812智能控制LED,包括數據信號輸入引腳(DIN)和數據信號輸出引腳(DOUT)。這允許多個LED級聯并且只用一個數據線進行控制。鏈中的第一個LED負責處理從MCU接收到的前三個字節數據,然后將后續的數據簡單地轉發給DOUT引腳,該引腳可以連接到另一個LED的DIN引腳。LED將以此方式繼續向下傳遞數據,直到它們接收到復位信號為止(即,DIN線在一段時間內持續保持低電平狀態)。傳輸的字節按照圖1所示的協議進行組織。第一個字節(G7-G0)表示綠色LED的8位PWM強度,其中0x00是完全關閉,0xFF是完全打開。類似地,第二個字節(R7-R0)用于控制紅色LED的強度,第三個字節(B7-B0)用于控制藍色LED的強度。

wKgaomUt2iWARBrUAAChoW2HPEQ727.png1WS2812 LED的3字節數據協議的結構這些24位數據都是通過改變方波的脈沖寬度來進行編碼的,如圖2所示。請注意,無論發送代碼0還是代碼1,方波的周期仍保持在1.25μs。對于WS2812,使數據線保持低電平至少50μs即可生成復位信號。另請注意,圖2中顯示的計時值具有±0.15μs的公差。

wKgaomUt2iWAY2DiAABEp1s2eiI317.png

圖2:WS2812 LED的0和1位的計時圖

一種截然不同的組件,NeoPixels的RGBW種類實際上是SK6812智能控制LED,采用與WS2812 LED相同的運作原理。然而,由于它們包含第四個LED,因此實施了圖3所示的4字節數據協議。與圖1相比,唯一的區別在于數據的串聯字節(W7-W0),該字節指定了白色LED的8位PWM強度。

wKgaomUt2iWAWZ39AACfmWmMTtM004.png3SK6812 LED的4字節數據協議的結構。圖4展示了SK6812控制信號的時間值,同樣與WS2812略有差別(不過仍在±0.15μs的公差范圍內)。請注意,這兩種代碼的方波周期均保持不變,都為1.2μs。此外,SK6812的復位信號長度為80μs,而非50μs。

wKgaomUt2iWAVVOiAABClficJjc287.png圖4:SK6812 LED的0位和1位的計時圖。

步驟

由于NeoPixel的控制信號對計時要求非常嚴格,因此除非使用匯編語言,否則無法通過簡單的比特帶寬方法產生此信號。雖然還有許多其他方法可以利用各種MCU外設、外部硬件或其組合來生成該信號,但其中最直接的方法是配置MCU定時器來生成PWM輸出信號。這是因為,如上一部分中所述,NeoPixel控制信號只是一種固定頻率的PWM信號,采用不同的占空比表示0位和1位。為了以與傳輸協議相同的速率高效地在這兩個占空比之間進行切換,還必須配置DMA流來管理更新。盡管這種方法可能是內存效率最低的方式,但它易于理解、CPU高效并且易于實施(得益于STM32Cube環境)。

以下應用程式利用STM32CubeIDE(版本1.8.0)、NUCLEO-F401RE開發板和RGBW5x8 NeoPixel Shield實現上述的方法。不過,這些步驟可以輕松地推廣到任何STM32MCU/板和NeoPixel產品上。假定我們已經創建了一個STM32CubeIDE項目。如需使用其他IDE,你可以改為使用獨立的STM32CubeMX代碼配置器工具,將項目導出到所需的開發平臺上。

1.配置PWMa. 先打開STM32CubeMX配置.ioc文件(如果還未打開的話)。隨后,STM32CubeIDE將切換到*器件配置工具(*Device Configuration Tool視圖,供你配置MCU。

b. 將定時器通道備用功能分配給選定的GPIO引腳,以與NeoPixel進行連接。所選定時器通道應該能夠生成PWM輸出。圖5顯示了我的項目中的相關部分,我選擇了引腳PB10,并將它分配給定時器2、通道3(TIM2_CH3)功能。

wKgaomUt2iWAVVSLAAJfdM6V1Qs446.png圖5:將連接到DIN的GPIO引腳配置為定時器通道c. 從左側的組件列表中選擇上一步中確定的定時器外設,以打開模式和配置(*Mode andConfiguration面板。在模式(*Mode面板中,選擇“內部時鐘”作為時鐘源,并從適當的定時器通道的下拉列表中選擇“PWM生成CHx”。在圖6中,定時器2、通道3已設為“PWM生成CH3”模式,因為我在上一步中選擇了TIM2_CH3備用功能。請注意,在完成此步驟后,關聯的GPIO引腳應在引腳排列視圖中從黃色變為綠色。

d. 在定時器的*配置(*Configuration面板中,驗證“預分頻器”和“脈沖”值是否都設置為0。計數器周期,即自動重載寄存器(ARR),需要進行設置以得到所需的PWM周期(如果使用RGB WS2812 LED,則為1.25μs;如果使用RGBW SK6812 LED,則為1.2μs)。這將取決于定時器外設輸入的速率。只需將所需的PWM周期除以時鐘周期,并減去1即可得到此值(減去1是因為定數器從0開始)。就我的器件而言,該公式得出的ARR值為99.8,我將其四舍五入為100(圖6)。請參見下文,了解有關計算理想ARR值的詳細說明。

wKgaomUt2iaAOugvAAPcVg6siNg852.png圖6:將所選定時器通道配置為PWM輸出計算ARR值

假設定時器“預分頻器”值設為0,可以很容易的計算出ARR值

wKgaomUt2iaAIheuAAAKT9ljiw4625.png具體來說,ARR值等于PWM信號周期除以定時器外設的時鐘信號周期。我們知道,根據使用的NeoPixel類型不同,TPWM可以是1.25μs或1.2μs(例如本例中,TPWM=1.2μs)。要確定Ttimer,你需要查閱器件的規格書,確定定時器外設連接到哪個總線。規格書可以在ST的網站上找到或STM32CubeIDE會隨附提供:選擇幫助>目標器件文檔和資源(Help>TargetDevice Docs and Resources。然后,在MCU選項卡下選擇規格書,如圖7所示。

wKgaomUt2iaAfEYGAADp-K-bUZI268.png7查找器件規格書

在我使用的MCU(STM32F401RE)規格書中,器件框圖中顯示我的定時器(TIM2)已連接到APB1(見圖8)。

wKgaomUt2iaAP45cAAOisIZiqBU143.png8STM32F401xD/xE的部分框圖(源自DS10086

圖9介紹了:通過切換到STM32CubeIDE中的*時鐘配置(*Clock Configuration)選項卡,我們可以發現TIM2的時鐘頻率為84MHzwKgaomUt2iaASHdtAAAJBaFQjxw634.png

wKgaomUt2iaAXwR4AAKKzg2YOko038.png

9確定定時器時鐘頻率

因此,wKgaomUt2iaAZ65gAAAJ-6pVqXY778.png為了使PWM周期盡可能接近NeoPixel控制信號的周期,我們四舍五入至最接近的整數并得到ARR=100。2.配置DMA

a. 從組件列表中選擇DMA外設。

b. 在配置(Configuration)面板的DMA1選項卡下,點擊添加Add按鈕。在下拉菜單中,選擇你的定時器/通道組合。在我的項目中,我選擇了“TIM2_CH3/UP”。

c. 針對該新的DMA請求,將方向改為“內存到外設”。

d. 同時,將優先級改為“非常高”。

e. 驗證默認的DMA請求設置是否與圖10中顯示的相匹配。

f. 保存.ioc文件,以生成項目代碼。

wKgaomUt2ieADmNXAAIi9i5fDls339.png10配置DMA流,以便有效更新PWM信號的占空比

3.編寫代碼

在main.c文件中,按從上到下的順序編寫,本部分展示了一個簡單的示例應用,用于測試NeoPixel LED的全彩能力。此處提供了兩個版本的main()函數,一個用于RGB WS2818 LED,另一個用于RGBW SK6812 LED。

a. 在main.c文件的私有typedef部分,你可以創建一個新的數據類型,以便輕松訪問單個LED顏色值以及整個NeoPixel數據結構(如圖1和圖3所示)。列表1提供了RGB和RGBW NeoPixel組件的typedef。此代碼應粘貼在/* USER CODE BEGIN PTD */和/* USER CODE END PTD */注釋之間。

列表1為RGB WS2812和RGBW SK6812 LED自定義數據類型

typedef union

{

struct

{

uint8_t b;

uint8_t r;

uint8_t g;

} color;

uint32_t data;

} PixelRGB_t;

typedef union

{

struct

{

uint8_t w;

uint8_t b;

uint8_t r;

uint8_t g;

} color;

uint32_t data;

} PixelRGBW_t;

b. 更改“脈沖”寄存器(也稱為CCRx)的值,這樣可以改變PWM波形的占空比。因此,我們必須計算適當的CCRx值,以實現使用的NeoPixels所需的代碼0和代碼1方波(無論是在圖2還是圖4中所示的那些)。對于RGBWS2812 LED,這些值計算如下:

ZERO=(ARR+1)(0.32)

ONE=(ARR+1)(0.64)

對于RGBW SK6812 LED,其計算過程稍有不同。

ZERO=(ARR+1)(0.25)

ONE=(ARR+1)(0.5)

當然,這些計算出的值應該四舍五入到最接近的整數。在main.c文件的私有定義部分,為每個值創建一個#define指令(請參見以下圖11中的示例)。

c. 除了CCRx值之外,還應在私有定義部分中定義控制的NeoPixel LED數量和DMA緩沖區大小。如圖11所示,只需將LED的數量乘以相應的NeoPixel數據結構中的位數即可(回想圖1和圖3)。還必須分配一個額外的緩沖區元素,因為最后一個CCRx值應為零(復位信號)。

wKgaomUt2ieAQ_4iAAJKl2kCKjk144.png11WS2812和SK6812LED的私有定義

d. 將列表2中提供的DMA完成回調函數添加到/* USER CODE BEGIN 0/和/USER CODE END 0*/之間的私有用戶代碼部分。務必將TIM_CHANNEL_x更改為步驟1c中配置的通道。

列表2HAL_TIM_PWM_PulseFinishedCallback()函數的實施

void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)

{

HAL_TIM_PWM_Stop_DMA(htim, TIM_CHANNEL_x);

}

e. 最后,必須將應用代碼添加到main()函數中。列表3提供了一個使用WS2812LED的示例main()函數,而列表4提供了使用SK6812 LED的類似示例main()函數。請注意,HAL_TIM_PWM_Start_DMA()函數的TIM_CHANNEL_x參數必須再次進行修改,以匹配步驟1c中配置的通道。

列表3RGB WS2812 LED的示例main()函數

int main(void)

{

/* USER CODE BEGIN 1 */

PixelRGB_tpixel[NUM_PIXELS] = {0};

uint32_tdmaBuffer[DMA_BUFF_SIZE] = {0};

uint32_t *pBuff;

int i, j, k;

uint16_t stepSize;

/* USER CODE END 1 */

/* MCUConfiguration--------------------------------------------------------*/

/* Reset of allperipherals, Initializes the Flash interface and the Systick. */

HAL_Init();

/* USER CODE BEGIN Init*/

/* USER CODE END Init*/

/* Configure the systemclock */

SystemClock_Config();

/* USER CODE BEGINSysInit */

/* USER CODE ENDSysInit */

/* Initialize allconfigured peripherals */

MX_GPIO_Init();

MX_USART2_UART_Init();

MX_DMA_Init();

MX_TIM2_Init();

/* USER CODE BEGIN 2 */

/* USER CODE END 2 */

/* Infinite loop */

/* USER CODE BEGINWHILE */

k = 0;

stepSize = 4;

while (1)

{

/* USER CODE ENDWHILE */

/* USER CODE BEGIN 3*/

for (i = (NUM_PIXELS- 1); i > 0; i--)

{

pixel[i].data =pixel[i-1].data;

}

if (k < 255)

{

pixel[0].color.g =254 - k; //[254, 0]

pixel[0].color.r= k + 1; //[1, 255]

pixel[0].color.b =0;

}

else if (k < 510)

{

pixel[0].color.g =0;

pixel[0].color.r =509 - k; //[254, 0]

pixel[0].color.b =k - 254; //[1, 255]

j++;

}

else if (k < 765)

{

pixel[0].color.g =k - 509; //[1, 255];

pixel[0].color.r =0;

pixel[0].color.b =764 - k; //[254, 0]

}

k = (k + stepSize) %765;

// not so bright

pixel[0].color.g>>= 2;

pixel[0].color.r>>= 2;

pixel[0].color.b>>= 2;

pBuff = dmaBuffer;

for (i = 0; i

{

for (j = 23; j>= 0; j--)

{

if((pixel[i].data >> j) & 0x01)

{

*pBuff =NEOPIXEL_ONE;

}

else

{

*pBuff =NEOPIXEL_ZERO;

}

pBuff++;

}

}

dmaBuffer[DMA_BUFF_SIZE - 1] = 0; // last element must be 0!

HAL_TIM_PWM_Start_DMA(&htim2, TIM_CHANNEL_x, dmaBuffer,DMA_BUFF_SIZE);

HAL_Delay(10);

}

/* USER CODE END 3 */

}

列表4RGBW SK6812 LED的示例main()函數

int main(void)

{

/* USER CODE BEGIN 1 */

PixelRGBW_tpixel[NUM_PIXELS] = {0};

uint32_tdmaBuffer[DMA_BUFF_SIZE] = {0};

uint32_t *pBuff;

int i, j, k;

uint16_t stepSize;

/* USER CODE END 1 */

/* MCU Configuration--------------------------------------------------------*/

/* Reset of allperipherals, Initializes the Flash interface and the Systick. */

HAL_Init();

/* USER CODE BEGIN Init*/

/* USER CODE END Init*/

/* Configure the systemclock */

SystemClock_Config();

/* USER CODE BEGINSysInit */

/* USER CODE ENDSysInit */

/* Initialize allconfigured peripherals */

MX_GPIO_Init();

MX_USART2_UART_Init();

MX_DMA_Init();

MX_TIM2_Init();

/* USER CODE BEGIN 2 */

/* USER CODE END 2 */

/* Infinite loop */

/* USER CODE BEGINWHILE */

k = 0;

stepSize = 4;

while (1)

{

/* USER CODE ENDWHILE */

/* USER CODE BEGIN 3*/

for (i = (NUM_PIXELS- 1); i > 0; i--)

{

pixel[i].data =pixel[i-1].data;

}

if (k < 255)

{

pixel[0].color.g =254 - k; //[254, 0]

pixel[0].color.r= k + 1;//[1, 255]

pixel[0].color.b =0;

pixel[0].color.w =0;

}

else if (k < 510)

{

pixel[0].color.g =0;

pixel[0].color.r =509 - k; //[254, 0]

pixel[0].color.b =k - 254; //[1, 255]

pixel[0].color.w =0;

j++;

}

else if (k < 765)

{

pixel[0].color.g =0;

pixel[0].color.r =0;

pixel[0].color.b =764 - k; //[254, 0]

pixel[0].color.w =k - 509; //[1, 255]

}

else if (k < 1020)

{

pixel[0].color.g =k - 764; //[1, 255]

pixel[0].color.r =0;

pixel[0].color.b =0;

pixel[0].color.w =1019 - k; //[254, 0]

}

k = (k + stepSize) %1020;

// 50% brightness

pixel[0].color.g>>= 2;

pixel[0].color.r>>= 2;

pixel[0].color.b>>= 2;

pixel[0].color.w>>= 2;

pBuff = dmaBuffer;

for (i = 0; i

{

for (j = 31; j>= 0; j--)

{

if((pixel[i].data >> j) & 0x01)

{

*pBuff =NEOPIXEL_ONE;

}

else

{

*pBuff =NEOPIXEL_ZERO;

}

pBuff++;

}

}

dmaBuffer[DMA_BUFF_SIZE- 1] = 0; // last element must be 0!

HAL_TIM_PWM_Start_DMA(&htim2, TIM_CHANNEL_x, dmaBuffer,DMA_BUFF_SIZE);

HAL_Delay(10);

}

/* USER CODE END 3 */

}

該項目現在應該能夠成功構建,并支持你在器件上運行代碼了。

結論

使用邏輯分析儀捕獲了上面提供的RGB和RGBW配置生成的控制信號。分別如圖12和圖13中所示。請注意,它們與圖2和圖4中指定的預期輸出相匹配。

wKgaomUt2ieAcksKAAEm1bEMPC4910.png

12生成的WS2812控制信號(正在發送0b0011……)

wKgaomUt2ieAcYyWAAEI1x0Mck0349.png

13生成的SK6812控制信號(正在發送0b0010……)

wKgaomUt2ieAZduiAAABcngP-W4089.png

更多STM32項目的相關內容請查看以下帖子:
  • 在STM32上輕松使用printf函數

  • 在STM32上輕松使用scanf

  • 輕松在 STM32 系列之間進行遷移

  • 利用 STM32CubeIDE 中構建分析儀

  • VL53L5CXToF傳感器使用入門
wKgaomUt2ieAZduiAAABcngP-W4089.png ? ?最后,如果你喜歡這篇文章,快分享給更多的小伙伴吧!切記點個贊哦!

提示點擊菜單設計支持:工程師錦囊,獲取更多工程師小貼士

秘技知識學不停 專屬福利享不停

就等您加入!

點此登記

賺積分、換好禮

立即到「會員權益」查看您的禮遇! 如有任何問題,歡迎聯系得捷電子DigiKey的客服團隊

中國(人民幣)客服

wKgaomUt2iiAeQBCAAADBaTNctA462.png400-920-1199wKgaomUt2iiAB_4FAAADAQryhLs505.png服務支持 > 聯系客服 > 微信客服wKgaomUt2iiALRPpAAADNUSMvSY112.pngservice.sh@digikey.comwKgaomUt2iiATrlcAAACyRJDcPk162.png QQ在線實時咨詢:4009201199

中國(美金)/ 香港客服

wKgaomUt2iiAeQBCAAADBaTNctA462.png

400-882-4440

wKgaomUt2iiAeQBCAAADBaTNctA462.png852-3104-0500wKgaomUt2iiALRPpAAADNUSMvSY112.pngchina.support@digikey.comwKgaomUt2iiAZleMAACA1g3d7HM828.png

wKgaomUt2iiAeytWAAJQEo9UZ9g629.png

點擊下方“閱讀原文”查看更多

讓我知道你在看wKgaomUt2iiAfDHdAAAD385SHbk261.png


原文標題:按這個步驟 STM32即可完美控制 NeoPixels

文章出處:【微信公眾號:得捷電子DigiKey】歡迎添加關注!文章轉載請注明出處。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 得捷電子
    +關注

    關注

    1

    文章

    255

    瀏覽量

    8783

原文標題:按這個步驟 STM32即可完美控制 NeoPixels

文章出處:【微信號:得捷電子DigiKey,微信公眾號:得捷電子DigiKey】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    濕法刻蝕步驟有哪些

    說到濕法刻蝕了,這個是專業的技術。我們也得用專業的內容才能給大家講解。聽到這個工藝的話,最專業的一定就是講述濕法刻蝕步驟。你知道其中都有哪些步驟嗎?如果想要了解,今天是一個不錯的機會,
    的頭像 發表于 12-13 14:08 ?83次閱讀

    stm32 GPIO中斷配置教程

    理解GPIO中斷 在STM32中,GPIO中斷允許微控制器在引腳狀態變化時(如從低到高或從高到低)立即響應,而無需不斷輪詢引腳狀態。這對于處理外部事件(如按鈕下、傳感器信號等)非常有用。 2. 硬件準備
    的頭像 發表于 11-19 15:53 ?692次閱讀

    LMK05318手冊里的編寫EEPROM的步驟這個掩碼什么意思?

    如下圖所示,是LMK05318手冊里的編寫EEPROM的步驟,沒看懂這個掩碼什么意思 然后,我在調試過程中發現幾個問題: 1.在編寫程序時,如果不執行第三步,燒錄后發現程序能出來正常波形,否則
    發表于 11-11 08:14

    STM32項目實戰:基于STM32U5的智能燈光控制系統(LVGL),附項目教程/源碼

    《智能燈光控制系統_STM32U5》項目完整文檔、項目源碼,點擊免費領取。項目資料領取:https://s.c1ns.cn/F5XyUSTM32項目實戰之“智能燈光控制系統”(基于
    的頭像 發表于 11-07 18:50 ?773次閱讀
    <b class='flag-5'>STM32</b>項目實戰:基于<b class='flag-5'>STM32</b>U5的智能燈光<b class='flag-5'>控制</b>系統(LVGL),附項目教程/源碼

    STM32項目實戰:基于STM32F4的智能燈光控制系統(LVGL),附項目教程/源碼

    《智能燈光控制系統_STM32F4》項目完整文檔、項目源碼,私信小雯老師免費領取。STM32項目實戰之“智能燈光控制系統”(基于STM32F
    的頭像 發表于 10-17 16:16 ?756次閱讀
    <b class='flag-5'>STM32</b>項目實戰:基于<b class='flag-5'>STM32</b>F4的智能燈光<b class='flag-5'>控制</b>系統(LVGL),附項目教程/源碼

    電氣控制線路的安裝步驟和注意事項

    在電氣工程領域,控制線路的安裝是確保電氣系統正常運行的關鍵步驟。為了實現高效且安全的安裝過程,以下是一系列詳盡的步驟和注意事項: 理解原理圖:在開始任何實際工作之前,徹底理解原理圖是必不可少
    的頭像 發表于 09-30 15:30 ?558次閱讀

    stm32g與stm32h的區別

    STM32G和STM32H是STMicroelectronics(意法半導體)推出的兩個不同的微控制器系列,它們都屬于STM32的廣泛產品線。STM
    的頭像 發表于 09-04 09:15 ?717次閱讀

    bin文件怎么燒錄到stm32

    號的STM32開發板,如STM32F103、STM32F407等。選擇適合自己需求的開發板即可。 USB數據線 燒錄STM32
    的頭像 發表于 08-22 09:38 ?1928次閱讀

    組合邏輯控制器的設計步驟是什么

    于計算機、通信、控制等領域。本文將詳細介紹組合邏輯控制器的設計步驟,包括需求分析、邏輯功能定義、邏輯表達式、邏輯圖、電路設計、仿真驗證、測試和優化等。 需求分析 需求分析是設計組合邏輯控制
    的頭像 發表于 06-30 10:30 ?713次閱讀

    全自動絕緣油耐壓測試儀的操作步驟——每日了解電力知識

    ) 2.在圖1頁面下, 設置 鍵進入下一級頁面(圖2); 3.在圖2頁面下, 選擇 鍵移動光標√ 至 GB1986處, 確認 鍵即可進入國標1986設置子頁面(圖3)。 在圖3頁
    的頭像 發表于 06-17 10:23 ?554次閱讀
    全自動絕緣油耐壓測試儀的操作<b class='flag-5'>步驟</b>——每日了解電力知識

    stm32f303工程的步驟是什么?

    求大神指導:建一個stm32f303工程,本人只下載了keil5軟件,還需要下載什么,下載之后的建工程步驟是什么?
    發表于 04-11 07:07

    按鈕控制電機正反轉電路分析

    紅色為帶電部分。這個電路的動作步驟是:第一次SB,KM1吸合,正轉啟動,第二次SB,KM1釋放,電機停止。第三次SB,KM2吸合,反轉
    發表于 03-31 16:47 ?2986次閱讀
    按鈕<b class='flag-5'>控制</b>電機正反轉電路分析

    STM32電機控制SDK v5.0入門

    電子發燒友網站提供《STM32電機控制SDK v5.0入門.pdf》資料免費下載
    發表于 03-11 09:25 ?10次下載

    plc控制系統的設計步驟有哪些

    PLC控制系統設計是一個非常復雜的過程,下面介紹PLC控制系統設計步驟。 第一步:明確需求 在設計PLC控制系統之前,首先需要明確需求。這包括確定
    的頭像 發表于 01-16 16:21 ?3352次閱讀

    stm32使用AD5762配置程序

    AD5762是一款由ADI(Analog Devices)推出的12位單通道、高速、低功耗的數字模擬轉換器(DAC)。它是STM32控制器的一部分,用于實現模擬輸出功能。本文將詳細介紹
    的頭像 發表于 01-09 11:10 ?702次閱讀
    主站蜘蛛池模板: 国产精品一区二区20P| 亚洲国产欧美在线人成aaaa20| 韩国电影久久| poronovideos动物狗猪| 伊人久久精品AV无码一区| 天天操夜夜噜| 美女露出逼| 九九电影伦理片| 囯产愉拍亚洲精品一区| 91天堂国产在线 在线播放| 亚洲三级大片| 性欧美videofree中文字幕| 日韩免费视频一区| 日本老人oldmantv乱| 美国色情三级欧美三级纸匠情挑| 狠狠色丁香婷婷久久综合五月| 国产免费高清mv视频在线观看| write as 跳蛋| 99热久久这里只有精品| 在线看片亚洲| 一区二区三区毛AAAA片特级 | 99re久久热在线视频| 亚洲精品久久国产高清| 亚欧免费观看在线观看更新| 少妇连续高潮抽搐痉挛昏厥| 日本漫画无彩翼漫画| 欧美日韩精品不卡在线观看| 嫩草成人影院| 龙广在线收听| 欧美性appstin孕妇| 欧美性喷潮xxxx| 日本三级按摩推拿按摩| 色网址在线观看| 亚洲福利网站| 又黄又湿免费高清视频| 69日本人XXXX护士HD| av天堂网2017avtt| 成人永久免费视频| 国产福利视频一区二区| 国产精品美女久久久久AV超清| 超碰97 总站 中文字幕|