Перейти к содержанию

Прерывания На Stm32F429


Wypuk

Рекомендуемые сообщения

Возникла проблема, совершенно мне непонятная. Использую STM32F429... настроил таймер TIM4, разрешил прерывание UIE в таймере, разрешил его в NVIC - №30, разрешил прерывания глобально.

При переполнении таймера ставится флаг "pending", и в обработчик входить не желает. Что делать?

На f103 при тех же самых настройках работает как и должен. Почему? Каких-то кординальных отличий в Tim4 на f103 и f429 не заметил.

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

В keil на asm на плате stm32f429i-disco

		 AREA	 |PROGRAMMA|, CODE, READONLY
		 INCLUDE Sourse.s
		 INCLUDE Flash.s
		 INCLUDE Power.s
		 INCLUDE RCC.s

		 ; Interrupt
TIM4_IRQHandler PROC						 ; Прерывание TIM4
		 EXPORT TIM4_IRQHandler

		 MOV32 R0, #TIM4
		 MOV R1, #0
		 STR R1, [R0, #0x10]

		 MOV32 R0, #GPIOG
		 LDR R1, [R0, #0x14]
		 EOR R1, #0x6000
		 STR R1, [R0, #0x14]

		 BX LR
		 ENDP

		 ; Inicialisation Code

System_Init	 PROC
		 EXPORT System_Init

		 MOV32 R0, #HSEON			 ; В R0 помещам адрес бита HSEON в bit band alias
		 MOV R1, #1
		 STR R1, [R0]			 ; Запускаем внешний кварц, устанавливая бит HSEON

		 MOV32 R0, #HSERDY
		 MOV R2, #0xFFFF
M1			 LDR R1, [R0]			 ; Читаем бит HSERDY по адресу в bit band region
		 CMP R1, #0				 ; Проверяем флаг готовности
		 BNE M2					 ; Если бит установился, то HSE запущен, и идем дальше
		 SUBS R2, #1
		 BNE M1					 ; Пробуем еще раз
		 B	 System_fault		 ; Если не запустился, то ошибка! Fuck!

M2			 MOV32 R0, #RCC			 ; PLLQ = 9, PLLSRC = от HSE, PLLP = 2 ('00'), PLLN = 360 ('5A'), PLLM = 16 ('10')
		 MOV32 R1, 0x09405A10
		 STR R1, [R0, #RCC_PLLCFGR]

		 MOV32 R1, 0x10000000
            STR R1, [R0, #RCC_APB1ENR]

		 MOV32 R0, #PLLON			 ; Запускаю PLL
		 MOV R1, #1
		 STR R1, [R0]
		 MOV32 R0, #ODEN			 ; Разрешаю Over-drive режим
		 MOV R1, #1
		 STR R1, [R0]

		 MOV32 R0, #ODRDY
M3			 LDR R1, [R0]
		 CMP R1, #0
		 BEQ M3

		 MOV32 R0, #ODSWEN			 ; Включаю Over-drive режим
		 MOV R1, #1
		 STR R1, [R0]

		 MOV32 R0, #ODSWRDY
M4			 LDR R1, [R0]
		 CMP R1, #0
		 BEQ M4

		 MOV32 R3, #0xFFFF
M5			 MOV32 R0, #FLASH			 ; Теперь настраиваем предвыборку Flash, т.к. планируем работать на 180 МГц
		 MOV R1, #0x0105
		 STR R1, [R0, #FLASH_ACR] ; Включили буфер предвыборки и настроили на 5 циклов ожидания

M6			 LDR R2, [R0, #FLASH_ACR] ; Проверяем записалось ли?
		 CMP R2, R1
		 BEQ M7
		 SUBS R3, #1
		 BNE M6
		 B	 M5
M7			 MOV32 R0, #RCC
		 MOV32 R1, #0xFF409400		 ; SysClk = 180 МГц, AHBpre = 1, APB1pre = 4, APB2pre = 2, SYSCLCK от PLL
		 STR R1, [R0, #RCC_CFGR]	 ; Сохраняем настройки в RCC_CFGR

		 MOV32 R0, #PLLRDY
M8			 LDR R1, [R0]			 ; читаем флаг готовности PLL
		 CMP R1, #0				 ; Проверяем флаг готовности
		 BEQ M8					 ; пока не установится в 1

		 MOV32 R0, #SW1
		 MOV R1, #1
		 STR R1, [R0]			 ; Выбираем тактовый сигнал Sysclk от PLL
		 MOV32 R0, #SWS1			 ; ожидаем пока Sysclck не переключится на PLL
M9			 LDR R1, [R0]			 ; читаем флаг готовности SWS1
		 CMP R1, #0				 ; Проверяем флаг готовности
		 BEQ M9					 ; ждем пока не установится в 1

		 MOV32 R0, #RCC
		 MOV R1, #0x20
		 STR R1, [R0, #RCC_AHB1ENR]

		 MOV32 R0, #GPIOG
		 MOV32 R1, #0x14000000		 ; General purpose output mode
		 STR R1, [R0, #0]			 ; GPIOx_MODER
		 MOV32 R1, #0x00000000		 ; Low speed
		 STR R1, [R0, #0x08]		 ; GPIOx_OSPEEDR
		 MOV32 R1, #0x14000000		 ; Pull-up
		 STR R1, [R0, #0x0C]		 ; GPIOx_PUPDR
		 MOV32 R1, #0x00006000
		 STR R1, [R0, #0x18]		 ; GPIOx_BSRR Установить биты 13-14 в порту G

		 MOV32 R0, #RCC
		 MOV R1, #0x4
		 STR R1, [R0, #RCC_APB1ENR]

		 MOV32 R0, #TIM4
		 MOV R1, #0xAFC8
		 STR R1, [R0, #0x28]		 ; TIMx_PSC
		 MOV R1, #0x07D0
		 STR R1, [R0, #0x2C]		 ; TIMx_ARR
		 MOV R1, #0x0000
		 STR R1, [R0, #0x24]		 ; TIMx_CNT
		 MOV R1, #0x0001
		 STR R1, [R0, #0x0C]		 ; TIMx_DIER
		 MOV R1, #0x0085
		 STR R1, [R0]			 ; TIMx_CR1

		 MOV32 R0, #NVIC_Base
		 MOV32 R1, #0x40000000
		 STR R1, [R0]

		 CPSIE I
		 MOV32 R3, #GPIOG

		 BX LR

System_fault ; где-то здесь нужно что-то сделать
		 ; дабы обработать отказ HSE
		 B	 .
		 ENDP

		 ; My Appication

Main		 PROC
		 EXPORT	 Main


		 B		 Main
		 ENDP

		 END

Изменено пользователем Wypuk
Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

×
×
  • Создать...