Baytni qabul qilish
Ma'lumotni bir baytga qabul qilish uchun USART va ishlatiladigan GPIO'lar sozlanadi, shundan so'ng USART_DR registri qabul qilingan ma'lumotlarni o'z ichiga olgan bo'lsa o'qiladi (ma'lumotlar mavjudligi USART_SR.RXNE bayrog'i bilan aniqlanadi). Quyidagi algoritm qo'llaniladi.
0. USART qurilmasi va ishlatilgan GPIO'lar uchun soat rejimini yoqing .
1. USARTni yoqing: USART_CR1.UE=1.
2. USART_CR1.M bit (0 - 8 bit, 1 - 9 bit) yordamida so'z uzunligini o'rnating. E'tibor bering, parite biti, agar foydalanilsa, ma'lumotlar biti hisoblanadi.
3. USART_CR2.STOP bit maydonidan foydalangan holda to'xtash bitlari sonini o'rnating (00 - 1 to'xtash bit; 01 - 0,5; 10 - 2; 11 - 1,5 to'xtash biti).
4. Agar DMA ishlatilsa, USART_CR3.DMAR bitini o'rnating va DMA registrini sozlang.
5. Bod tezligini tanlash uchun USART_BRR registridan foydalaning.
6. RX kirishiga mos keladigan mikrokontroller chiqishini raqamli kirish sifatida o'rnating.
7. USART qabul qilgichni yoqing: USART_CR1.RE=1. Qabul qilgich RX kirishida strat bitini kuta boshlaydi.
8. Bayt qabul qilinganda USART_SR.RXNE bayrog'i o'rnatiladi. Bu kadr qabul qilish siljishi registriga qabul qilinganligini, siljish registridagi ma'lumotlar RDR registriga o'tkazilganligini va RDR registrini USART_DR dan o'qish orqali o'qish mumkinligini bildiradi. Agar USART_CR1.RXNEIE biti o'rnatilsa, uzilish hosil bo'ladi.
Ma'lumotni qabul qilishda NF (agar signalda shovqin aniqlansa), FE (kadr xatosi, masalan, to'xtash bitlari olinmasa), PE (paritet xatosi) bayroqlari o'rnatilishi mumkin; shovqinni boshqarish o'chirilishi mumkin, parite sukut bo'yicha o'chirilgan.
Ma'lumotlar qabul qilingandan so'ng o'rnatiladi, USART_DR registri o'qilganda USART_SR.RXNE bayrog'i o'chiriladi. Agar DMA ishlatilsa, RXNE bayrog'i qabul qilingan har bir baytga o'rnatiladi va DMA USART_DR baytini o'qiganda tozalanadi.
Keyingi kadr tugashidan oldin maʼlumotlar USART_DR dan oʻqilishi kerak, aks holda toʻlib ketish xatosi yuzaga keladi. To'lib ketgan taqdirda USART.ORE bayrog'i o'rnatiladi. Belgilangan bayroq kamida 1 bayt yo'qolganligini bildiradi. Agar USART.RXNE bayrog'i o'rnatilgan bo'lsa, RDR USART_DR registridan o'qilishi kerak bo'lgan haqiqiy ma'lumotlarni o'z ichiga oladi. Agar RXNE bayrog'i o'chirilgan bo'lsa, bu ma'lumotlar allaqachon o'qilgan degan ma'noni anglatadi - bu o'qish yangi kadr olingan paytda sodir bo'lsa (va darhol yo'qolsa) sodir bo'lishi mumkin. Umuman olganda, to'lib ketgan taqdirda, RDR registridagi ma'lumotlar yo'qolmaydi, lekin qabul qilish almashinuvi registridagi ma'lumotlar yo'qoladi.
Tanaffusni qabul qilish kadr xatosi sifatida ko'rib chiqiladi; tanaffusni olgandan so'ng, FE bayrog'ini tiklash uchun USART_DR dan o'qish kerak. Ma'lumotlarning bir qismini olgandan so'ng chiziqning "erkin" (Bo'sh) holatiga o'tishi "belgi" Idle qabul qilish sifatida qabul qilinadi; bu USART_SR.IDLE bayrog'ini o'rnatadi va agar USART_CR1.IDLEIE biti o'rnatilgan bo'lsa, uzilish ham hosil bo'ladi. USART_SR.IDLE bayrog‘ini tiklash uchun USART_DR dan o‘qish kerak.
Kadrni qabul qilishda USART qabul qilgichni o'chirmang, aks holda hozirgi qabul qilingan bayt yo'qoladi.
1-misol
Ushbu misolda mikrokontroller kompyuterdan olingan har bir baytga javoban teskari bayt yuboradi. Kompyuter 0 dan 255 gacha baytlarni ketma-ket yuboradi va har bir javobning to'g'riligini tekshiradi, shundan so'ng u xatolar soni haqida xabarni ko'rsatadi. Dastur aloqa liniyasining ishlashini tekshirish uchun ishlatilishi mumkin.
Bu yerda siz manba kodlarini VC6.0 loyihasi (kompyuter uchun) va Atollic TrueSTUDIO loyihasi (mikrokontroller uchun) sifatida yuklab olishingiz mumkin. VC6.0 uchun loyiha, masalan, IDE Code::Bloklariga import qilinishi va MinGW bilan kompilyatsiya qilinishi mumkin.
KOMPYUTER uchun manba kodi 1
Ko'rsatish
MCU uchun manba kodi 1
Ko'rsatish
2-misol
Ushbu misolda mikrokontroller kompyuterdan olingan har qanday satrga “Aha!” xabari bilan javob beradi, “Salom, MCU!” qatoridan tashqari, unga javoban mikrokontroller “Salom, kompyuter!” qatorini yuboradi. kompyuter. Satrda verguldan keyin bo'sh joy mavjudligini yodda tuting.
KOMPYUTER uchun manba kodi 2
MAQOMOTI porti bilan ishlash uchun dastur birinchi misoldagi kabi sinfdan foydalanadi. Asosiy dastur faylini chalkashtirib yubormaslik uchun u faqat alohida h-faylga joylashtiriladi.
Ko'rsatish
MCU uchun manba kodi 2
Ko'rsatish
muallif: to'siq; sana: 2016-01-24; o'zgartirilgan: 2016-01-27
Do'stlaringiz bilan baham: |