
Мазмұны:
2025 Автор: John Day | [email protected]. Соңғы өзгертілген: 2025-01-23 14:51


Сәлем! Бұл оқулықта біз STM32F4 ARM MCU мен Python арасында USART байланысын орнатуға тырысамыз (оны кез келген басқа тілмен ауыстыруға болады). Сонымен, бастайық:)
1 -қадам: Бағдарламалық қамтамасыз ету мен жабдыққа қойылатын талаптар
Аппараттық қамтамасыз ету тұрғысынан сізге қажет:
- STM32F4 ашу тақтасы (немесе басқа STM32 тақтасы)
- USB - TTL түрлендіргіші
Бағдарламалық қамтамасыз ету тұрғысынан:
- STM32CubeMX
- Keil uVision5
- Сериялық кітапханасы бар Python
2 -қадам: STM32CubeMX конфигурациясы
Алдымен не істегіміз келетінін түсінейік. Біз Python -дан USART арқылы деректерді тақтаға бергіміз келеді және бізде дұрыс деректер бар -жоғын тексереміз. Сонымен, бізге USART пен Led қосу керек.
-
Қосылу қойындысынан USART2 қосыңыз.
- Режимді асинхронды күйге өзгертіңіз
- Baud жылдамдығы 9600 бит/с дейін
- Сөз ұзындығы 8 битке паритетсіз
- Паритет жоқ
- DMA параметрлерінен цикулярлы режимде USART2_RX қосыңыз
- NVIC параметрлерінен USART2 жаһандық үзілісті қосыңыз
- PD12 түймесін басу арқылы жарықдиодты қосыңыз
Содан кейін кодты жасаңыз:)
3 -қадам: Keil бағдарламалық жасақтамасын жасау
#қосу
#қосу
Бұл кітапханалар жолдық операцияларда және логикалық айнымалыны анықтау үшін қажет болады.
/ *ПАЙДАЛАНУШЫ КОДЫ БАСТАЛДЫ 2 */ HAL_UART_Receive_DMA (& huart2, (uint8_t *) деректер_буфері, 1); / * ПАЙДАЛАНУШЫ КОДЫ 2 ЖОҚ *
Мұнда UMA DMA -мен басталды.
/ *USER CODE BEGIN 4 */void HAL_UART_RxCpltCallback (UART_HandleTypeDef *huart) {/ *Пайдаланылмаған аргументтерді құрастыруды ескертуді болдырмау */ҚОЛДАНЫЛМАҒАН (huart); / * ЕСКЕРТПЕ: Бұл функцияны өзгертуге болмайды, егер кері байланыс қажет болса, HAL_UART_RxCpltCallback */ if (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0] пайдаланушы файлында енгізілуі мүмкін.]; индекс _ ++; } басқа {index_ = 0; аяқталды = 1; } // HAL_UART_Transmit (& huart2, data_buffer, 1, 10); } / * ПАЙДАЛАНУШЫЛАР КОДЫ 4 БІТІРДІ * /
Бұл бір байт таңбаны алған кезде іске қосылатын ISR. Сонымен біз бұл байтты аламыз және оны «\ n» алғанға дейін толық алынған деректерді қамтитын data_full -ге жазамыз. Біз «\ n» алған кезде біз дайын жалаушаны 1 және while циклін жасаймыз:
while (1) { / * ПАЙДАЛАНУШЫ КОДЫ УАҚЫТТА * / if (аяқталды) {if (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } memset (data_full, '\ 0', strlen (data_full)); аяқталды = 0; } басқа {_NOP (); } / * ПАЙДАЛАНУШЫ КОДЫ 3 * /} БАСТАЛДЫ
Егер дайын жалау жоғары болса, біз толық алынған деректер мен қалаған деректердің мазмұнын салыстырамыз, егер олар тең болса, біз жетекшіні ауыстырамыз. Осыдан кейін біз дайын жалаушаны тазалап, жаңа деректерді күтеміз, сонымен қатар массивке қайта жазылмау үшін data_full массивін өшіреміз.
4 -қадам: Python бағдарламалық жасақтамасын жасау
Сонымен, біз өз нөмірімізді соңында '/n' белгісімен жібергіміз келеді, себебі Keil бағдарламалық қамтамасыз ету соңын білу үшін оны көруі қажет.
сериялық импорт
ser = serial. Serial ('COM17') #Құрылғыдағы сол портты Device Manager арқылы тексеріңіз
ser.write (b'24 / n ')
Сіз '24 / n 'жіберген сайын жарық диоды қосылатынын көресіз. Егер сіз басқа нәрсе жіберсеңіз, бұл оған әсер етпеуі керек.
5 -қадам: Қорытынды
Біз оқулықтың соңына жеттік. егер сізде қандай да бір мәселе немесе сұрақ туындаса, тартынбаңыз. Қолымнан келгенше көмектесуге тырысамын. Көп рақмет:)
Ұсынылған:
BBC Micro: бит және Scratch - интерактивті руль және жүргізуші ойыны: 5 қадам (суреттермен)

BBC Micro: бит және Scratch - интерактивті руль және көлік жүргізу ойыны: Менің осы аптадағы тапсырмаларымның бірі - біз жазған Scratch бағдарламасымен интерфейс жасау үшін BBC Micro: bit пайдалану. Мен бұл ThreadBoard тақтасын ендірілген жүйені құрудың тамаша мүмкіндігі деп ойладым! Менің сызатқа шабытым
Электр және газ есептегішін (Бельгия/Голландия) оқыңыз және Thingspeak -ке жүктеңіз: 5 қадам

Электр және газ есептегішін (Бельгия/Голландия) оқыңыз және Thingspeak -ке жүктеңіз: Егер сіз энергияны тұтыну туралы ойласаңыз немесе ұсақ -түйек болса, смартфоныңыздағы жаңа сандық есептегіштің деректерін көргіңіз келуі мүмкін. жобада біз ағымдағы деректерді Бельгия немесе Голландияның цифрлық электрінен аламыз
Hologram Nova және Ubidots көмегімен қосылған шешімдерді қосыңыз және жаңартыңыз: 9 қадам

Hologram Nova және Ubidots көмегімен қосылған шешімдерді қосыңыз және жаңартыңыз: инфрақұрылымды жаңарту үшін голограмманы қолданыңыз. Ubidots -қа деректерді (температура) жіберу үшін Raspberry Pi көмегімен Hologram Nova орнатыңыз. Келесі нұсқаулықта Ubidots Raspberry Pi көмегімен голограмма Нованы қалай орнату керектігін көрсетеді
Бетті тану және сәйкестендіру - OpenCV Python және Arduino көмегімен Arduino Face ID: 6 қадам

Бетті тану және сәйкестендіру | OpenCV Python және Arduino көмегімен Arduino Face ID: бетті тану AKA тұлғаның идентификаторы қазіргі кезде ұялы телефондардағы ең маңызды мүмкіндіктердің бірі болып табылады. Сонымен, менде " менің Arduino жобам үшін жеке идентификаторым болуы мүмкін " деген сұрақ болды. және жауап - иә … Менің саяхатым келесідей басталды: 1 -қадам: Бізге кіру
STM32F407 Discovery жиынтығын және GSM A6 модулін қолданатын негізгі ұялы телефон: 14 қадам (суреттермен)

STM32F407 Discovery жиынтығын және GSM A6 модулін қолданатын негізгі ұялы телефон: Сіз салқындатылған жоба жасағыңыз келді ме? Егер иә болса, ең танымал және бәріне ұнайтын гаджеттің бірін, яғни ұялы телефонды қалай құруға болады !!! Бұл нұсқаулықта мен сізге STM көмегімен қарапайым ұялы телефонды қалай жасау керектігін айтамын