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

Настройка Кнопки Stm32Vl Discovery


Стальной

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

Доброго времени суток всем.

Имеется демоплатка сабж, заливаю вот такой код.

#include <iostm32f100xB.h>
void main(void)
{
unsigned long d;

//Enabling clock for GPIOC
RCC_APB2ENR_bit.IOPCEN = 1;
//Configuring GPIO8 and GPIO9 as push-pull output
//refer to datasheet for details
GPIOC_CRH_bit.CNF8 = 0;
GPIOC_CRH_bit.CNF9 = 0;
GPIOC_CRH_bit.MODE8 = 1;
GPIOC_CRH_bit.MODE9 = 1;

GPIOA_CRL_bit.CNF1 = 1;
GPIOA_CRL_bit.MODE1 = 0;

while (1)
{
while ( (GPIOA_IDR_bit.IDR0) );
//switching the LEDs
if (GPIOC_ODR_bit.ODR8)
{
 GPIOC_ODR_bit.ODR8 = 0;
 GPIOC_ODR_bit.ODR9 = 1;
}
else
{
 GPIOC_ODR_bit.ODR8 = 1;
 GPIOC_ODR_bit.ODR9 = 0;
}
//simple delay
for (d=0; d<100000UL; ++d);
}
}

Ожидаемый результат - Светодиоды мигают, пока кнопка отпущена. При нажатии кнопки виснут. Реальность - в регистре IDR всегда 0, мигание есть.

На самом деле, я не могу вообще управлять портом A. Другими порты работают логично. Среда разработки IAR. Там в настройках есть галочка для добавления загрузчика, если ее снимаю - вообще не работает прошивка. Я думаю, может загрузчик как-то блокирует порт.

Помогите решить проблему. Спасибо.

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

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

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

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

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

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

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

Тьфу ты черт. Конечно. Спасибо.

Тогда минимальный вопрос еще. Есть ли программа, которая может дамп флэша сделать, типа ST Visual Programmer?

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

Неа! void EXTI1_IRQHandler(void) воспринимается как обычная функция. Надо как-то указать компилятору, что это обработчик прерывания.

Имеется файлик core_cm3.h, в нём есть что-то похожее, но он не собирается

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

#include <iostm32f100xB.h>
#include "stm32f10x.h"
#include "system_stm32f10x.h"

void EXTI0_IRQHandler( void )
{
 GPIOC_ODR_bit.ODR9 = 1;
 EXTI_PR_bit.PR0 = 1;
}

void main(void)
{
 unsigned long d; 
 //EXTI_PR = 0xFFFF;
 //Enabling clock for GPIOC and GPIOA
 RCC_APB2ENR_bit.IOPCEN = 1;
 RCC_APB2ENR_bit.IOPAEN = 1;
 //Configuring GPIO8 and GPIO9 as push-pull output
 //refer to datasheet for details
 GPIOC_CRH_bit.CNF8 = 0;
 GPIOC_CRH_bit.CNF9 = 0;
 GPIOC_CRH_bit.MODE8 = 1;
 GPIOC_CRH_bit.MODE9 = 1;
 //button pin
 GPIOA_CRL_bit.CNF1 = 1;
 GPIOA_CRL_bit.MODE1 = 0;
 AFIO_EXTICR1_bit.EXTI0 = 1;
 EXTI_RTSR_bit.TR0= 1;
 EXTI_IMR_bit.MR0 = 1;
 //asm( "CPSIE i" );
 NVIC_EnableIRQ(EXTI0_IRQn);
// EXTI_SWIER_bit.SWIER0 = 1;//
 while (1)
 {
   //switching the LED   
   GPIOC_ODR_bit.ODR8 ^= 1;
   for (d=0; d<200000UL; ++d);
 }
}

Так же подгружен ассемблерный файл, правда SystemInit я закомментил.

   MODULE  ?cstartup
    ;; Forward declaration of sections.
    SECTION CSTACK:DATA:NOROOT(3)
    SECTION .intvec:CODE:NOROOT(2)
    EXTERN  __iar_program_start
    EXTERN  SystemInit	   
    EXTERN  main
    EXTERN  EXTI0_i
    PUBLIC  __vector_table
    DATA
__vector_table
    DCD	 sfe(CSTACK)
    DCD	 Reset_Handler			 ; Reset Handler
    DCD	 NMI_Handler			   ; NMI Handler
    DCD	 HardFault_Handler		 ; Hard Fault Handler
    DCD	 MemManage_Handler		 ; MPU Fault Handler
    DCD	 BusFault_Handler		  ; Bus Fault Handler
    DCD	 UsageFault_Handler	    ; Usage Fault Handler
    DCD	 0						 ; Reserved
    DCD	 0						 ; Reserved
    DCD	 0						 ; Reserved
    DCD	 0						 ; Reserved
    DCD	 SVC_Handler			   ; SVCall Handler
    DCD	 DebugMon_Handler		  ; Debug Monitor Handler
    DCD	 0						 ; Reserved
    DCD	 PendSV_Handler		    ; PendSV Handler
    DCD	 SysTick_Handler		   ; SysTick Handler
	 ; External Interrupts
    DCD	 WWDG_IRQHandler			   ; Window Watchdog
    DCD	 PVD_IRQHandler			    ; PVD through EXTI Line detect
    DCD	 TAMPER_IRQHandler			 ; Tamper
    DCD	 RTC_IRQHandler			    ; RTC
    DCD	 FLASH_IRQHandler			  ; Flash
    DCD	 RCC_IRQHandler			    ; RCC
    DCD	 EXTI0_IRQHandler			  ; EXTI Line 0
    DCD	 EXTI1_IRQHandler			  ; EXTI Line 1
    DCD	 EXTI2_IRQHandler			  ; EXTI Line 2
    DCD	 EXTI3_IRQHandler			  ; EXTI Line 3
    DCD	 EXTI4_IRQHandler			  ; EXTI Line 4
    DCD	 DMA1_Channel1_IRQHandler	  ; DMA1 Channel 1
    DCD	 DMA1_Channel2_IRQHandler	  ; DMA1 Channel 2
    DCD	 DMA1_Channel3_IRQHandler	  ; DMA1 Channel 3
    DCD	 DMA1_Channel4_IRQHandler	  ; DMA1 Channel 4
    DCD	 DMA1_Channel5_IRQHandler	  ; DMA1 Channel 5
    DCD	 DMA1_Channel6_IRQHandler	  ; DMA1 Channel 6
    DCD	 DMA1_Channel7_IRQHandler	  ; DMA1 Channel 7
    DCD	 ADC1_IRQHandler			   ; ADC1
    DCD	 0							 ; Reserved
    DCD	 0							 ; Reserved
    DCD	 0							 ; Reserved
    DCD	 0							 ; Reserved
    DCD	 EXTI9_5_IRQHandler		    ; EXTI Line 9..5
    DCD	 TIM1_BRK_TIM15_IRQHandler	 ; TIM1 Break and TIM15
    DCD	 TIM1_UP_TIM16_IRQHandler	  ; TIM1 Update and TIM16
    DCD	 TIM1_TRG_COM_TIM17_IRQHandler ; TIM1 Trigger and Commutation and TIM17
    DCD	 TIM1_CC_IRQHandler		    ; TIM1 Capture Compare
    DCD	 TIM2_IRQHandler			   ; TIM2
    DCD	 TIM3_IRQHandler			   ; TIM3
    DCD	 TIM4_IRQHandler			   ; TIM4
    DCD	 I2C1_EV_IRQHandler		    ; I2C1 Event
    DCD	 I2C1_ER_IRQHandler		    ; I2C1 Error
    DCD	 I2C2_EV_IRQHandler		    ; I2C2 Event
    DCD	 I2C2_ER_IRQHandler		    ; I2C2 Error
    DCD	 SPI1_IRQHandler			   ; SPI1
    DCD	 SPI2_IRQHandler			   ; SPI2
    DCD	 USART1_IRQHandler			 ; USART1
    DCD	 USART2_IRQHandler			 ; USART2
    DCD	 USART3_IRQHandler			 ; USART3
    DCD	 EXTI15_10_IRQHandler		  ; EXTI Line 15..10
    DCD	 RTCAlarm_IRQHandler		   ; RTC Alarm through EXTI Line
    DCD	 CEC_IRQHandler			    ; HDMI-CEC
    DCD	 0							 ; Reserved
    DCD	 0							 ; Reserved
    DCD	 0							 ; Reserved
    DCD	 0							 ; Reserved
    DCD	 0							 ; Reserved
    DCD	 0							 ; Reserved
    DCD	 0							 ; Reserved
    DCD	 0							 ; Reserved
    DCD	 0							 ; Reserved
    DCD	 0							 ; Reserved
    DCD	 0							 ; Reserved					   
    DCD	 TIM6_DAC_IRQHandler		   ; TIM6 and DAC underrun
    DCD	 TIM7_IRQHandler			   ; TIM7			   
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Default interrupt handlers.
;;
    THUMB
    PUBWEAK Reset_Handler
    SECTION .text:CODE:REORDER:NOROOT(2)
Reset_Handler
   ; LDR	 R0, =SystemInit
   ; BLX	 R0
    LDR	 R0, =__iar_program_start
    BX	  R0

    PUBWEAK NMI_Handler
    SECTION .text:CODE:REORDER:NOROOT(1)
NMI_Handler
    B NMI_Handler
    PUBWEAK HardFault_Handler
    SECTION .text:CODE:REORDER:NOROOT(1)
HardFault_Handler
    B HardFault_Handler
    PUBWEAK MemManage_Handler
    SECTION .text:CODE:REORDER:NOROOT(1)
MemManage_Handler
    B MemManage_Handler
    PUBWEAK BusFault_Handler
    SECTION .text:CODE:REORDER:NOROOT(1)
BusFault_Handler
    B BusFault_Handler
    PUBWEAK UsageFault_Handler
    SECTION .text:CODE:REORDER:NOROOT(1)
UsageFault_Handler
    B UsageFault_Handler
    PUBWEAK SVC_Handler
    SECTION .text:CODE:REORDER:NOROOT(1)
SVC_Handler
    B SVC_Handler
    PUBWEAK DebugMon_Handler
    SECTION .text:CODE:REORDER:NOROOT(1)
DebugMon_Handler
    B DebugMon_Handler
    PUBWEAK PendSV_Handler
    SECTION .text:CODE:REORDER:NOROOT(1)
PendSV_Handler
    B PendSV_Handler
    PUBWEAK SysTick_Handler
    SECTION .text:CODE:REORDER:NOROOT(1)
SysTick_Handler
    B SysTick_Handler
    PUBWEAK WWDG_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
WWDG_IRQHandler
    B WWDG_IRQHandler
    PUBWEAK PVD_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
PVD_IRQHandler
    B PVD_IRQHandler
    PUBWEAK TAMPER_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
TAMPER_IRQHandler
    B TAMPER_IRQHandler
    PUBWEAK RTC_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
RTC_IRQHandler
    B RTC_IRQHandler
    PUBWEAK FLASH_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
FLASH_IRQHandler
    B FLASH_IRQHandler
    PUBWEAK RCC_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
RCC_IRQHandler
    B RCC_IRQHandler
    PUBWEAK EXTI0_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(2)
EXTI0_IRQHandler
    B EXTI0_IRQHandler

    PUBWEAK EXTI1_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
EXTI1_IRQHandler
    B EXTI1_IRQHandler
    PUBWEAK EXTI2_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
EXTI2_IRQHandler
    B EXTI2_IRQHandler
    PUBWEAK EXTI3_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
EXTI3_IRQHandler
    B EXTI3_IRQHandler
    PUBWEAK EXTI4_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
EXTI4_IRQHandler
    B EXTI4_IRQHandler
    PUBWEAK DMA1_Channel1_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
DMA1_Channel1_IRQHandler
    B DMA1_Channel1_IRQHandler
    PUBWEAK DMA1_Channel2_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
DMA1_Channel2_IRQHandler
    B DMA1_Channel2_IRQHandler
    PUBWEAK DMA1_Channel3_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
DMA1_Channel3_IRQHandler
    B DMA1_Channel3_IRQHandler
    PUBWEAK DMA1_Channel4_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
DMA1_Channel4_IRQHandler
    B DMA1_Channel4_IRQHandler
    PUBWEAK DMA1_Channel5_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
DMA1_Channel5_IRQHandler
    B DMA1_Channel5_IRQHandler
    PUBWEAK DMA1_Channel6_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
DMA1_Channel6_IRQHandler
    B DMA1_Channel6_IRQHandler
    PUBWEAK DMA1_Channel7_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
DMA1_Channel7_IRQHandler
    B DMA1_Channel7_IRQHandler
    PUBWEAK ADC1_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
ADC1_IRQHandler
    B ADC1_IRQHandler
    PUBWEAK EXTI9_5_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
EXTI9_5_IRQHandler
    B EXTI9_5_IRQHandler
    PUBWEAK TIM1_BRK_TIM15_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
TIM1_BRK_TIM15_IRQHandler
    B TIM1_BRK_TIM15_IRQHandler
    PUBWEAK TIM1_UP_TIM16_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
TIM1_UP_TIM16_IRQHandler
    B TIM1_UP_TIM16_IRQHandler
    PUBWEAK TIM1_TRG_COM_TIM17_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
TIM1_TRG_COM_TIM17_IRQHandler
    B TIM1_TRG_COM_TIM17_IRQHandler
    PUBWEAK TIM1_CC_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
TIM1_CC_IRQHandler
    B TIM1_CC_IRQHandler
    PUBWEAK TIM2_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
TIM2_IRQHandler
    B TIM2_IRQHandler
    PUBWEAK TIM3_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
TIM3_IRQHandler
    B TIM3_IRQHandler
    PUBWEAK TIM4_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
TIM4_IRQHandler
    B TIM4_IRQHandler
    PUBWEAK I2C1_EV_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
I2C1_EV_IRQHandler
    B I2C1_EV_IRQHandler
    PUBWEAK I2C1_ER_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
I2C1_ER_IRQHandler
    B I2C1_ER_IRQHandler
    PUBWEAK I2C2_EV_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
I2C2_EV_IRQHandler
    B I2C2_EV_IRQHandler
    PUBWEAK I2C2_ER_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
I2C2_ER_IRQHandler
    B I2C2_ER_IRQHandler
    PUBWEAK SPI1_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
SPI1_IRQHandler
    B SPI1_IRQHandler
    PUBWEAK SPI2_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
SPI2_IRQHandler
    B SPI2_IRQHandler
    PUBWEAK USART1_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
USART1_IRQHandler
    B USART1_IRQHandler
    PUBWEAK USART2_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
USART2_IRQHandler
    B USART2_IRQHandler
    PUBWEAK USART3_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
USART3_IRQHandler
    B USART3_IRQHandler
    PUBWEAK EXTI15_10_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
EXTI15_10_IRQHandler
    B EXTI15_10_IRQHandler
    PUBWEAK RTCAlarm_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
RTCAlarm_IRQHandler
    B RTCAlarm_IRQHandler
    PUBWEAK CEC_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
CEC_IRQHandler
    B CEC_IRQHandler
    PUBWEAK TIM6_DAC_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
TIM6_DAC_IRQHandler
    B TIM6_DAC_IRQHandler
    PUBWEAK TIM7_IRQHandler
    SECTION .text:CODE:REORDER:NOROOT(1)
TIM7_IRQHandler
    B TIM7_IRQHandler			   
    END

Происходит переход по вектору прерывания вот сюда

B EXTI0_IRQHandler

Но сама функция так и не вызывается, просто висит на этой строке

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

Сделал как написано http://we.easyelectronics.ru/STM32/stm32-vldiscovery-moy-variant-bystrogo-starta.html

файл core_cm3.h из скачанных не хотел собираться, заменил на один из тех, что шел в комплекте с iar, плюс он потребовал еще два файлика. Их подсунул.теперь прерывания есть и обработчик вызывается, но я не могу понять, где проблема в предыдущем случае. Ассемблерный файл такой же вроде как.

В таком варианте мне непривычна структура описания регистров, под восьмыми я приучился к варианту описания иар.

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

  • 2 недели спустя...
  • 3 месяца спустя...

Дабы не создавать новую тему, спрошу здесь. Изучаю ARM на плате stm32lDiscovery, дошел до кнопки. Сделал, чтобы при нажатии кнопки загорались два светодиода, а при отпускании - тухли. Можно ли как нибудь сделать, чтобы при зажатии кнопки зажигались два светодиода, но через 2 секунды один погас?

post-178186-0-90311800-1462818599.png

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

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

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

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

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

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

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

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

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

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

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