To'xtatish
Agar siz USART qurilmasidan uzilishlarni hal qilmoqchi bo'lsangiz, ishlov beruvchi funksiyasini belgilashingiz kerak. USART uzilishining sababidan qat'iy nazar, bir xil ishlov beruvchi ishlatiladi.
extern "C" void USARTx_IRQHandler ()
{
// Istisno ishlov beruvchi kodi.
}
Bu erda nomdagi "x" belgisi USARTx_IRQHandlerUSART qurilma raqamini bildiradi: 1, 2, ...
Uzilishning sababi, ishlovchi tomonidan holat registrini o'rganish orqali ichki aniqlanadi USARTx->SR.
USART qurilmasini sozlash orqali qiziqqan bayroqlarni o'rnatishda uzilishlarni yaratishni yoqishni unutmang, shuningdek, NVIC uzilish boshqaruvchisini sozlashingiz kerak - ustuvorlikni belgilash va qayta ishlashga ruxsat berish - funktsiyalar bo'yicha
NVIC_SetPriority ( USARTx_IRQn , PRIORITY );
NVIC_EnableIRQ ( USARTx_IRQn );
Istisnolar, uzilishlar, darajalar haqida ko'proq ma'lumotni bu erda topishingiz mumkin .
Bayt uzatish
USART qurilmasi orqali baytni uzatish uchun USART_DR registriga yozish kifoya, lekin avval siz qurilmalarni sozlash uchun bir qator amallarni bajarishingiz kerak. Harakatlar algoritmi taxminan quyidagicha bo'ladi.
0. USART qurilmasi va foydalanilgan GPIO -lar uchun soat rejimini yoqing (odatdagidek, aks holda qurilma registrlariga yozish ham mumkin bo'lmaydi).
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.DMAT bitini o'rnating va DMA registrini sozlang.
5. Bod tezligini tanlash uchun USART_BRR registridan foydalaning.
6. USART uzatgichni yoqing: USART_CR1.TE=1, natijada USART qurilmasining TX chiqishida log darajasiga ega signal paydo bo'ladi. 1, "chiziq bo'sh" (agar mikrokontrollerning mos keladigan pimi muqobil funktsiya uchun chiqish sifatida tuzilgan bo'lsa).
7. Ushbu USART qurilmasining TX chiqishi muqobil funksiya uchun chiqish sifatida ulangan mikrokontroller pinini o'rnating.
8. O'tkazishni boshlash uchun USART_DR registriga yuboriladigan ma'lumotlarning bir baytini yozing. Registrga yozish USART_SR.TXE bayrog'ini tiklaydi (uzatilgan ma'lumotlar registri bo'sh). Transmit shift registriga bayt qo'yilganda, bayroq yana 1 ga o'rnatiladi va bayroq o'rnatilganda (USART_CR1.TXEIE o'rnatilgan) uzilishlar yoqilgan bo'lsa, uzilish hosil bo'ladi. Bu keyingi baytni USART_DR ga yozish mumkinligini anglatadi. Harakat uzatish uchun mo'ljallangan ma'lumotlarning har bir bayti uchun takrorlanishi kerak (TXE bayrog'ini o'rnatgandan so'ng keyingi ma'lumotlar baytini yozing).
9. Oxirgi baytni yozgandan so'ng, oxirgi kadr yuborilganligini va uzatish tugallanganligini bildiruvchi USART_SR.TC bayrog'i o'rnatilishini kutish kerak. Shundan so'ng siz USART-ni o'chirib qo'yishingiz yoki protsessorni oxirgi kadrning uzatilishini buzish xavfisiz to'xtatishingiz mumkin.
Do'stlaringiz bilan baham: |