ዝርዝር ሁኔታ:

STM32F4 ግኝት ቦርድ እና Python USART Communication (STM32CubeMx): 5 ደረጃዎች
STM32F4 ግኝት ቦርድ እና Python USART Communication (STM32CubeMx): 5 ደረጃዎች

ቪዲዮ: STM32F4 ግኝት ቦርድ እና Python USART Communication (STM32CubeMx): 5 ደረጃዎች

ቪዲዮ: STM32F4 ግኝት ቦርድ እና Python USART Communication (STM32CubeMx): 5 ደረጃዎች
ቪዲዮ: BTT SKR2 - I2C BlinkM on SKR 2 (Rev B) 2024, ህዳር
Anonim
STM32F4 ግኝት ቦርድ እና Python USART Communication (STM32CubeMx)
STM32F4 ግኝት ቦርድ እና Python USART Communication (STM32CubeMx)
STM32F4 ግኝት ቦርድ እና Python USART Communication (STM32CubeMx)
STM32F4 ግኝት ቦርድ እና Python USART Communication (STM32CubeMx)

ሃይ! በዚህ መማሪያ ውስጥ በ STM32F4 ARM MCU እና Python መካከል የ USART ግንኙነት ለመመስረት እንሞክራለን (በሌላ በማንኛውም ቋንቋ ሊተካ ይችላል)። ስለዚህ ፣ እንጀምር:)

ደረጃ 1 የሶፍትዌር እና የሃርድዌር መስፈርቶች

ከሃርድዌር አንፃር የሚከተሉትን ያስፈልግዎታል

  • STM32F4 ግኝት ቦርድ (ወይም ሌላ ማንኛውም STM32 ቦርድ)
  • ዩኤስቢ ወደ TTL መቀየሪያ

ከሶፍትዌር አንፃር -

  • STM32CubeMX
  • Keil uVision5
  • Python ከተከታታይ ቤተ -መጽሐፍት ጋር ተጭኗል

ደረጃ 2 STM32CubeMX ውቅር

መጀመሪያ ምን ማድረግ እንደምንፈልግ እንረዳ። በዩኤስአርት (USART) ላይ ከፓይዘን ለመሳፈር መረጃን ለማስተላለፍ እና ትክክለኛ ውሂብ ካለን እና የመቀያየር መሪ ካለን ለመፈተሽ እንፈልጋለን። ስለዚህ ፣ USART እና Led ን ማንቃት አለብን።

  • USART2 ን ከግንኙነት ትር ያንቁ።

    • ሁነታን ወደ አልተመሳሰል ይለውጡ
    • የባውድ መጠን ወደ 9600 ቢት/ሰት
    • የቃላት ርዝመት እስከ 8 ቢት ያለ እኩልነት
    • የእኩልነት ቢት የለም
    • ከዲኤምኤ ቅንብሮች ውስጥ USART2_RX በ cicular ሁነታ ውስጥ ያክሉ
    • ከ NVIC ቅንብሮች USART2 ዓለም አቀፍ መቋረጥን ያንቁ
  • PD12 ላይ ጠቅ በማድረግ LED ን ያንቁ

ከዚያ ኮድ ይፍጠሩ:)

ደረጃ 3 የኬይል ሶፍትዌር ልማት

#ያካትቱ

#ያካትቱ

እነዚህ ቤተመፃሕፍት በሕብረቁምፊ ሥራዎች ውስጥ እና የቦሊያን ተለዋዋጭ ለመለየት ይጠየቃሉ።

/ *የተጠቃሚ ተጠቃሚ ኮድ 2 */ HAL_UART_Receive_DMA (& huart2 ፣ (uint8_t *) data_buffer ፣ 1); / * የተጠቃሚ ኮድ መጨረሻ 2 */

እዚህ ፣ UART በዲኤምኤ ተጀምሯል።

/ *USER CODE BEGIN 4 */ባዶ HAL_UART_RxCpltCallback (UART_HandleTypeDef *huart) {/ *ጥቅም ላይ ያልዋለ የክርክር (ቶች) ማጠናከሪያ ማስጠንቀቂያ */ጥቅም ላይ ያልዋለ (huart) ፤ / * ማሳሰቢያ ፦ ይህ ተግባር መሻሻል የለበትም ፣ የጥሪው መልሶ ማግኛ ሲያስፈልግ ፣ HAL_UART_RxCpltCallback በተጠቃሚ ፋይል */ ከሆነ (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; ኢንዴክስ _ ++; } ሌላ {index_ = 0; ጨርሷል = 1; } // HAL_UART_ አስተላልፍ (& huart2 ፣ data_buffer ፣ 1 ፣ 10) ፤ } / * የተጠቃሚ ኮድ መጨረሻ 4 * /

አንድ ባይት ባህርይ ስናገኝ ይህ የሚሠራው ISR ነው። ስለዚህ. ያንን ባይት አግኝተን '\ n' እስክናገኝ ድረስ ሙሉውን የተቀበለውን ውሂብ ወደያዘው ወደ Data_full እንጽፋለን። ‹\ N› ስናገኝ የተጠናቀቀውን ባንዲራ 1 እናደርጋለን እና በሚዞሩበት ጊዜ ውስጥ-

(1) { / * የአገልጋይ ኮድ ያበቃል / * (ከተጠናቀቀ) {ከሆነ (strcmp (data_full ፣ cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD ፣ GPIO_PIN_12) ፤ } memset (data_full ፣ '\ 0' ፣ strlen (data_full)) ፤ ጨርሷል = 0; } ሌላ {_NOP () ፤ } / * የተጠቃሚ ተጠቃሚ ኮድ 3 * /}

የተጠናቀቀው ባንዲራ ከፍተኛ ከሆነ የምንፈልገውን ሙሉ መረጃ እና መረጃ ይዘቶች እናወዳድራቸዋለን እና እኩል ከሆኑ እንመራለን። ከዚያ በኋላ የተጠናቀቀውን ባንዲራ እናጸዳለን እና አዲስ ውሂብ እንጠብቃለን እንዲሁም ወደ ድርድሩ ላለመፃፍ የውሂብ_ፍሬ ድርድርን እናጸዳለን።

ደረጃ 4 የፓይዘን ሶፍትዌር ልማት

ስለዚህ ፣ እዚህ መጨረሻ ላይ ቁጥራችንን በ ‹/n› መላክ እንፈልጋለን ፣ ምክንያቱም የኪይል ሶፍትዌር መጨረሻውን ለማወቅ እሱን ማየት ስለሚያስፈልገው።

ማስመጣት ተከታታይ

ser = serial. Serial ('COM17') #ያንን ወደብ ከመሣሪያ አስተዳዳሪ በመሣሪያዎ ላይ ይፈትሹ

ser.write (b'24 / n ')

«24 / n» ን በላኩ ቁጥር ኤልኢዲ የሚቀያየር መሆኑን ማየት አለብዎት። ሌላ ማንኛውንም ነገር ከላኩ ሊነካው አይገባም።

ደረጃ 5 መደምደሚያ

የመማሪያው መጨረሻ ደርሰናል። ማንኛውም ችግር ወይም ጥያቄ ካለዎት እባክዎን ለመጠየቅ አያመንቱ። በተቻለኝ መጠን ለመርዳት እሞክራለሁ። በጣም አመሰግናለሁ:)

የሚመከር: