Контакты микроконтроллера презентация

Содержание

Краткое предыдущей серии Как можно подключить светодиод к микроконтроллеру? А кнопку? Какие параметры у контактов МК мы можем менять? А как? Что такое «регистры периферийных устройств»?

Слайд 1Есть ли у вас вопросы?


Слайд 2Краткое предыдущей серии
Как можно подключить светодиод к микроконтроллеру?

А кнопку?

Какие параметры у

контактов МК мы можем менять?

А как?

Что такое «регистры периферийных устройств»?

Как зажечь светодиод?







Слайд 3Цели на сегодня (те же, что и в прошлый раз):
Зажечь светодиод

Погасить

светодиод

Помигать светодиодом

Помигать по нажатию кнопки (bonus level)

Слайд 4Контакты микроконтроллера
(они же «пины», «ноги», «выводы»)



Тип:
цифровой
аналоговый

Направление:
вход
выход

Режим:
Ввод/вывод общего назначения (GPIO)
Альтернативный

Режим входа:
С подтяжкой

(вверх/вниз)
Без подтяжки (floating)

Режим выхода:
Комплементарный (Push pull)
Открытый сток (Open drain)

Текущее состояние:
входа (только чтение)
выхода (чтение/запись)

Слайд 5Что из этого нам сегодня нужно?
Чтобы зажечь светодиод на плате discovery,

нам нужна ножка в режиме комплементарного выхода (output push-pull).

Чтобы считать состояние кнопки – вход без подтяжки (input floating).

Слайд 6STM32f103RBT6
На плате discovery не доступны:
PA13, PA14, PA15; PB3,PB4; PC14,

PC15; PD0, PD1


Слайд 7STM32 VL Discovery
Два светодиода, подключенные к земле и МК:
PC.8
PC.9

Две кнопки:
Черная –

это reset
Синяя – PA.0 – просто кнопка с внешней подтяжкой к земле


Слайд 8Как же зажечь светодиод
Подать питание на нужный порт
через регистр RCC->APB2ENR

Настроить режим

нужного контакта в нужном порту (нужен режим output push pull)
через регистр GPIOx->CRH или CRL

Вывести на контакт высокий уровень
через регистр GPIOx->ODR


Слайд 9Как считать состояние кнопки?
Подать питание на нужный порт
через регистр RCC->APB2ENR

Настроить режим

нужного контакта в нужном порту (нужен режим input floating)
через регистр GPIOx->CRH или CRL

Проверить уровень на нужном контакте
через регистр GPIOx->IDR


Слайд 10Подвох
При записи и чтении регистров нас, как правило, волнуют состояния отдельных

бит.

При чтении нужно читать ТОЛЬКО отдельные биты
При записи нужно менять ТОЛЬКО отдельные биты

Почему?
Потому что состояние других бит может отражать что-нибудь еще.

Слайд 11Пример
Мы хотим зажечь светодиод на ножке РС8.

Для этого нужно установить восьмой

бит в регистре GPIOC->ODR.

Например вот так:
GPIOC->ODR = 256;

Но ведь так мы не только установим восьмой бит!
Мы еще и сбросим все остальные биты!

Слайд 12А при чтении?
Мы хотим проверить, нажата ли кнопка на РА0. Нужно

проверить нулевой бит в регистре IDR:
GPIOA->IDR == 1;

Но ведь это проверяет не только первый бит на равенство единице! Это проверяет и равенство всех остальных битов нулю.



Слайд 13Что же делать?
Битовые операции языка С!


Слайд 14Запись одного бита
Установка одного бита:
a |= 1

одного бита:
a &= ~(1<<3); // сбросить третий бит

Инверсия одного бита:
a ^= 1<<5; // инверсия пятого бита

Слайд 15Чтение одного бита
if( a & (1

если седьмой бит равен единице.

Писать if( a & (1<<7) == 1<<7) можно, но бессмысленно.

Скобки лучше ставить. Серьезно.



Слайд 16Запись нескольких бит
Объединение через ИЛИ:
a |= (1

седьмой и восьмой биты

Три волшебных числа:
a |= 0x3<<7; // установить седьмой и восьмой биты

a |= 0x7<<7; // установить седьмой, восьмой и девятый биты

a |= 0xF<<7; // установить 7,8,9 и 10й биты

Шестнадцатеричный код без сдвигов:
016 === 00002. Т.е. 10016 == 1 0000 00002

a |= 0x180; // == a |= (1<<7) | (1<<8)

Слайд 17Чтение нескольких бит (аналогично)
Объединение через ИЛИ:
a & (1

числа:
a & (3<<7)

Шестнадцатеричный код без сдвигов:
a & 0x180


Слайд 18Как помигать светодиодом?
Что такое мигание?
Это когда какое-то время светодиод горит, а

потом какое-то время не горит!

Значит, нужно:
Зажечь светодиод
Подождать
Погасить светодиод
Подождать
Повторить 1-4

Слайд 19Как подождать?
С помощью функции delay? Но как она работает?

Самый простой способ

– пустой цикл for:
for(uint32_t i=0; i<1000; i++) {;}

Ничего не делать 1000 раз подряд.
Количество итераций выбирается либо на глаз, либо исходя из частоты процессора (у нас – 72 МГц)

Слайд 20А можно ли чуть попроще помигать?
Можно:

Подождать
Инвертировать состояние ножки
Повторить 1-2


Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика