Оцените презентацию от 1 до 5 баллов!
Тип файла:
ppt / pptx (powerpoint)
Всего слайдов:
25 слайдов
Для класса:
1,2,3,4,5,6,7,8,9,10,11
Размер файла:
549.48 kB
Просмотров:
61
Скачиваний:
0
Автор:
неизвестен
Слайды и текст к этой презентации:
№1 слайд![Есть ли у вас вопросы?](/documents_6/151ac8bd74f15ecc67743cee633c8170/img0.jpg)
Содержание слайда: Есть ли у вас вопросы?
№2 слайд![Предупреждение Все](/documents_6/151ac8bd74f15ecc67743cee633c8170/img1.jpg)
Содержание слайда: Предупреждение
Все электрические схемы, представленные здесь и далее, являются условными!
В них могут отсутствовать важные компоненты!
№3 слайд![Цели на сегодня Зажечь](/documents_6/151ac8bd74f15ecc67743cee633c8170/img2.jpg)
Содержание слайда: Цели на сегодня:
Зажечь светодиод
Погасить светодиод
Помигать светодиодом
Помигать по нажатию кнопки (bonus level)
№4 слайд![Как зажечь светодиод? Это](/documents_6/151ac8bd74f15ecc67743cee633c8170/img3.jpg)
Содержание слайда: Как зажечь светодиод?
Это зависит от того, как он подключен.
№5 слайд![Как зажечь светодиод?](/documents_6/151ac8bd74f15ecc67743cee633c8170/img4.jpg)
Содержание слайда: Как зажечь светодиод?
№6 слайд![Как зажечь светодиод?](/documents_6/151ac8bd74f15ecc67743cee633c8170/img5.jpg)
Содержание слайда: Как зажечь светодиод?
№7 слайд![Как узнать, нажата ли кнопка?](/documents_6/151ac8bd74f15ecc67743cee633c8170/img6.jpg)
Содержание слайда: Как узнать, нажата ли кнопка?
№8 слайд![Как правильно подключать](/documents_6/151ac8bd74f15ecc67743cee633c8170/img7.jpg)
Содержание слайда: Как правильно подключать кнопку
№9 слайд![Но можно и наоборот](/documents_6/151ac8bd74f15ecc67743cee633c8170/img8.jpg)
Содержание слайда: Но можно и наоборот
№10 слайд![Логические уровни Для stm f](/documents_6/151ac8bd74f15ecc67743cee633c8170/img9.jpg)
Содержание слайда: Логические уровни
Для stm32f103:
Для других устройств уровни могут быть другими; кодирование может быть инверсным и т.д.
№11 слайд![Контакты микроконтроллера они](/documents_6/151ac8bd74f15ecc67743cee633c8170/img10.jpg)
Содержание слайда: Контакты микроконтроллера
(они же «пины», «ноги», «выводы»)
№12 слайд![Работа с периферийными](/documents_6/151ac8bd74f15ecc67743cee633c8170/img11.jpg)
Содержание слайда: Работа с периферийными устройствами
Специальные команды ассемблера
Ввод/вывод, отображенный на память (memory mapped IO) – регистры доступны по фиксированным адресам.
В последнем случае у каждого периферийного устройства есть набор регистров (не путать с регистрами ЦПУ).
Каждый регистр настраивает определенную функциональность.
Каждый бит в регистре что-то означает.
№13 слайд![Что из этого нам сегодня](/documents_6/151ac8bd74f15ecc67743cee633c8170/img12.jpg)
Содержание слайда: Что из этого нам сегодня нужно?
Чтобы зажечь светодиод на плате discovery, нам нужна ножка в режиме комплементарного выхода (output push-pull).
Чтобы считать состояние кнопки – вход без подтяжки (input floating).
№14 слайд![Как же всем этим управлять?](/documents_6/151ac8bd74f15ecc67743cee633c8170/img13.jpg)
Содержание слайда: Как же всем этим управлять?
Нужно как-то выбирать все эти режимы и состояния для каждого контакта! Как? Как должен выглядеть API?
С помощью специальных функций, которые кто-то уже написал за нас?
Но что делают эти функции?
№15 слайд![Работа с GPIO Контакты МК](/documents_6/151ac8bd74f15ecc67743cee633c8170/img14.jpg)
Содержание слайда: Работа с GPIO
Контакты МК логически объединяются в группы – «порты».
В stm32f10x в каждом порту 16 контактов.
Порты обозначаются буквами – PORTA, PORTB, PORTC...
Контакты обозначаются числами от 0 до 15:
PC.12 – 12-й контакт в порту С.
Количество доступных контактов зависит от корпуса МК; некоторые порты могут отсутствовать целиком или частично.
№16 слайд![STM f RBT На плате discovery](/documents_6/151ac8bd74f15ecc67743cee633c8170/img15.jpg)
Содержание слайда: STM32f103RBT6
На плате discovery не доступны:
PA13, PA14, PA15; PB3,PB4; PC14, PC15; PD0, PD1
№17 слайд![STM VL Discovery Два](/documents_6/151ac8bd74f15ecc67743cee633c8170/img16.jpg)
Содержание слайда: STM32 VL Discovery
Два светодиода, подключенные к земле и МК:
PC.8
PC.9
Две кнопки:
Черная – это reset
Синяя – PA.0 – просто кнопка с внешней подтяжкой к питанию
№18 слайд![Регистры GPIO Регистр CRL](/documents_6/151ac8bd74f15ecc67743cee633c8170/img17.jpg)
Содержание слайда: Регистры GPIO
Регистр CRL (control low) – режим работы пинов с 0 по 7.
Регистр CRH (control high) – режим работы пинов с 8 по 15.
Регистр IDR (input data register) – чтение состояния входов.
Регистр ODR (output data register) – чтение и запись состояния выходов.
И еще несколько.
У каждого порта есть такой набор регистров.
Где про них читать? reference manual, глава 9.2 (стр. 166)
№19 слайд![Доступ к регистрам периферии](/documents_6/151ac8bd74f15ecc67743cee633c8170/img18.jpg)
Содержание слайда: Доступ к регистрам периферии в языке С
Через указатели на «волшебные» структуры:
GPIOA->ODR – доступ к регистру ODR порта А, словно это обычная глобальная переменная.
(в других МК бывают «волшебные» указатели сразу на регистры, без структур)
№20 слайд![Почему ничего не работает?!](/documents_6/151ac8bd74f15ecc67743cee633c8170/img19.jpg)
Содержание слайда: Почему ничего не работает?!
Практически всю периферию в МК нужно сначала включить (подать питание и тактирование).
Это нужно сделать через регистры подсистемы тактирования. Все GPIO включаются через регистр RCC->APB2ENR (ref. man. стр. 142)
№21 слайд![Как же зажечь светодиод](/documents_6/151ac8bd74f15ecc67743cee633c8170/img20.jpg)
Содержание слайда: Как же зажечь светодиод
Подать питание на нужный порт
регистр RCC->AP2ENR
Настроить режим нужного контакта в нужном порту (нужен режим output push pull)
регистр GPIOx->CRH или CRL
Вывести на контакт высокий уровень
регистр GPIOx->ODR
№22 слайд![Битовые манипуляции Установка](/documents_6/151ac8bd74f15ecc67743cee633c8170/img21.jpg)
Содержание слайда: Битовые манипуляции
Установка одного бита:
a |= 1<<7; // установить седьмой бит
Сброс одного бита:
a &= ~(1<<3); // сбросить третий бит
Инверсия одного бита:
a ^= 1<<5; // инверсия пятого бита
№23 слайд![Доступ к регистрам,](/documents_6/151ac8bd74f15ecc67743cee633c8170/img22.jpg)
Содержание слайда: Доступ к регистрам, отображенным на память
Допустим, адрес нужного мне регистра - 0x4001 0800.
И регистр этот размером в 4 байта.
Как мне в него что-нибудь записать, если я пишу на С?
Например, можно создать указатель:
uint32_t * ptr = 0x40010800;
Но указателю нельзя присвоить число, будет ошибка компиляции.
Нужно сделать приведение типа:
uint32_t * ptr = (uint32_t *)0x40010800;
Теперь почти все ок, можно записать число по нужному адресу:
*ptr = 1;
№24 слайд![Доступ к регистрам,](/documents_6/151ac8bd74f15ecc67743cee633c8170/img23.jpg)
Содержание слайда: Доступ к регистрам, отображенным на память
А как сделать то же самое, не создавая указатель?
№25 слайд![Доступ к регистрам,](/documents_6/151ac8bd74f15ecc67743cee633c8170/img24.jpg)
Содержание слайда: Доступ к регистрам, отображенным на память
В последние годы, дефайнить каждый регистр – это уже не модно.
Теперь модно объявить структуру из нескольких регистров, относящихся к одному периферийному устройству.
А потом задефайнить адрес с приведением типа к этой структуре.
Тогда доступ к регистрам выглядит как доступ к глобальному указателю на структуру:
GPIOC->ODR = 1;