Как сделать обработчик

Flyboy74
Вт 19 июня 2018 г. 8:54 утра
Хорошо, я пытаюсь научиться создавать свои собственные прерывания.

Я научился использовать регистры для настройки булавок GPIO и установить/читать их.

Теперь я хочу научиться использовать регистры, чтобы прервать. Сначала я пытаюсь прервать рост края PA0. Я думаю, что я правильно настрою регистр, но не знаю, как установить функцию, которая вызывается при стрельбе прерывания.

У меня есть код, чтобы установить PA0 в качестве ввода, но я просто опубликую мой код для настройки прерывания. st-flash read out.bin 0x8000000 4096

Zoomx
Вт 19 июня 2018 г. 9:03 утра
Какое ядро?

Пито
Вт 19 июня 2018 г. 9:06 утра
Он безвкусно.. Он изучает программирование уровня регистра в C..

Flyboy74
Вт 19 июня 2018 г. 9:07
Я использую синюю таблетку STM103C

Flyboy74
Вт 19 июня 2018 г. 9:08
Он безвкусно.. Он изучает программирование уровня регистра в C.. Да, я хотел бы узнать, как это сделать, если бы никто уже не создал для вас фьюлс, и у вас только что были данные о новом чипе, и вам пришлось начать с самого начала :)

Стивестронг
Вт 19 июня 2018 г. 9:23 утра
Поиск прерывания exti в ядре Роджера, в файлах с расширением C, CPP и S.

Zoomx
Вт 19 июня 2018 г. 9:54 утра
Может, этот
https: // www.Программаринг.com/a/mdm4kzmwatg.HTML

Дэнниф
Вт 19 июня 2018 г. 15:23
Прежде всего, используйте предопределенные имена для файлов заголовка устройства. Это значительно облегчает порт в различный чип.

2-й, используйте функцию NVIC-enableIRQ в CMSIS, чтобы поместить ISR в векторную таблицу. Nvic-disableirq делает наоборот.

Некоторые примеры этого можно найти здесь: https: // github.com/dannyf00/my-mcu-libr ... /Stm32f1xx

Чтение таблицы - лучший путь, на мой взгляд, на мой взгляд.

Flyboy74
Вт 19 июня 2018 г., 8:49 вечера
@dannf спасибо, это то, что мне нужно знать.

Я смотрю на код в вашей ссылке, и это именно то, что я пытаюсь выучить.

Теперь у меня есть пара вопросов

nvic_enableirq () стандартная функция для c?? мне нужно включить все, чтобы иметь возможность использовать его??

Где я могу найти векторную таблицу??

используется код Nvic_enableirq (timx_cc_irqn) чтобы указать на void tim2_irqhandler (void), Я предполагаю, что TIMX_CC_IRQN находится в векторной таблице и где -то в листе данных??? Есть ли где -нибудь, я могу прочитать информацию об именовании фонда I.e Почему это называлось Tim2_irqhandler

Дэнниф
Чт 21 июня 2018 12:39
Векторная таблица находится в файле Starting Up и IRQ в файле заголовка устройства.

Flyboy74
Чт 21 июня 2018 г., 21:41
Спасибо, я, кажется, стал намного дальше и лучше понимать, как все это работает.

Я обнаружил "STM32F10x.H "от ST, который держит все, что мне нужно для синей таблетки.

Я также понимаю, что делает инструментальный щит GNU из Arm Cortex-M, и это откуда nvic_enableirq ().

У меня сейчас работает мой код, и я вычищу его и опубликует другие, чтобы увидеть :)

Спасибо за помощь всем, я медленно узнаю, что мне нужно знать :)

Flyboy74
Пт 22 июня 2018 г., 6:08
ОК, вот код, с которым я в итоге получил, чтобы создать межреяживание без использования встроенных в Ardunio, но вместо этого регистры низкого уровня.

Главный цикл просто выключает светодиод каждые полсекунды, и междров. У меня есть внешнее подтягивание на PA12
~/.arduino182r0$ grep -R -i base *|grep -i gpio|grep -i AFR

Дэнниф
Пт 22 июня 2018 г., 18:42
Вот что я написал - exti.C/.час: https: // github.com/dannyf00/my-mcu-libr ... /Stm32f1xx

Примером будет:
8002.450234] usb 3-4: new full-speed USB device number 59 using xhci_hcd [58002.614936] usb 3-4: New USB device found, idVendor=0483, idProduct=df11 [58002.614939] usb 3-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [58002.614941] usb 3-4: Product: STM32 BOOTLOADER [58002.614943] usb 3-4: Manufacturer: STMicroelectronics [58002.614944] usb 3-4: SerialNumber: 338334803335