Mailhouse
Вторник 01 ноября 2016 г. 12:42
Правление IS ucleo STM32F103RB, Arduino.CC IDE 1.6.12
Каждый раз, когда я пытаюсь установить IRQ, доска сбой. Прокомментируйте задание IRQ, и оно работает как чемпион, хотя и без прерываний. Любая помощь ценится.
Если nvic_enableirq после TIM_CR1_CEN, то он висит на задании NVIC. Как показано ниже, он висит на TIM_CR1_CEN.
Что я не получаю?
Каждый раз, когда я пытаюсь установить IRQ, доска сбой. Прокомментируйте задание IRQ, и оно работает как чемпион, хотя и без прерываний. Любая помощь ценится.
Если nvic_enableirq после TIM_CR1_CEN, то он висит на задании NVIC. Как показано ниже, он висит на TIM_CR1_CEN.
Что я не получаю?
void setup() {
// put your setup code here, to run once:
//Initialize serial and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect.
}
Serial.println("Setting up TIM2");
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;
TIM2->SR = 0; // Clear status register flags
TIM2->PSC = 2000; // Set prescaler
TIM2->ARR = 36000; // set auto-reload register
TIM2->DIER = TIM_DIER_UIE; // update interrupt
Serial.println("Enabling TIM2 IRQ");
NVIC_SetPriority(TIM2_IRQn, 0);
//NVIC_EnableIRQ(TIM2_IRQn);
Serial.println("Enabling TIM2");
TIM2->CR1 |= TIM_CR1_CEN; // set control register 1 enable flag
Serial.println(TIM2->SR, BIN);
Serial.println("TIM2 setup complete");
Serial.println(TIM2->SR, BIN);
pinMode(13, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
//Serial.println(TIM2->CNT);
if (TIM2->CNT == 35000)
digitalWrite(13, HIGH);
if (TIM2->CNT == 36000)
digitalWrite(13, LOW);
}
void TM2_IRQHandler(void)
{
if(TIM2->SR & TIM_SR_UIF) // if UIF flag is set
{
TIM2->SR &= ~TIM_SR_UIF; // clear UIF flag
Serial.println("TM3 Interrupt");
}
}
Rogerclark
Вторник 01 ноября 2016 г. 2:13
Какое ядро вы используете, то в учетной записи STM32Duino GitHub ?
Mailhouse
Вторник 01 ноября 2016 г. 2:22 утра
Да GitHub One STM32F1 и STM32L4. Должен ли я использовать что -то другое?
Rogerclark
Вторник 01 ноября 2016 г., 2:43
Это новое официальное ядро STM, которое было разработано STM для использования с доской Nucleo.
У нас также есть старое репо / ядро, основанное на оригинальном коде Lifmaple Libmaple.
Это также поддерживает бит Nucleo F103RB, а не L476 Nucleo и т. Д
https: // github.com/rogerclarkmelbourne/arduino_stm32
Но репо на основе Libmaple не использует HAL, это внедрение в чистую комнату Leaflabs из -за ограничений лицензий, когда они написали в 2012 году
В любом случае, если в официальном ядре STM есть ошибка, вам действительно нужно войти в нее в качестве ошибки в GitHub или, возможно, отправить в одну из ветров на этом форуме, посвященном этому ядро.
Это лучшая ветка, чтобы опубликовать
ViewTopic.PHP?F = 48&t = 1413&начало = 50
Потому что его контролируют Wi6labs, которые фактически написали код для STM
У нас также есть старое репо / ядро, основанное на оригинальном коде Lifmaple Libmaple.
Это также поддерживает бит Nucleo F103RB, а не L476 Nucleo и т. Д
https: // github.com/rogerclarkmelbourne/arduino_stm32
Но репо на основе Libmaple не использует HAL, это внедрение в чистую комнату Leaflabs из -за ограничений лицензий, когда они написали в 2012 году
В любом случае, если в официальном ядре STM есть ошибка, вам действительно нужно войти в нее в качестве ошибки в GitHub или, возможно, отправить в одну из ветров на этом форуме, посвященном этому ядро.
Это лучшая ветка, чтобы опубликовать
ViewTopic.PHP?F = 48&t = 1413&начало = 50
Потому что его контролируют Wi6labs, которые фактически написали код для STM
Rogerclark
Вторник 01 ноября 2016 г., 2:44
На самом деле, если у вас нет учетной записи GitHub, я войду в систему для вас и ссылаюсь на этот поток
Mailhouse
Вторник 01 ноября 2016 г. 13:54
Прежде чем я пойду сообщать об ошибках, может ли кто -нибудь еще повторить поведение?
Rogerclark
Вторник 01 ноября 2016 г., 19:39
Возможно ли это ошибка в вашем коде?
Скомпилируется ли тот же код и запускается в другой среде, чем Arduino Core и Arduino IDE?
Скомпилируется ли тот же код и запускается в другой среде, чем Arduino Core и Arduino IDE?
Mailhouse
Вторник 01 ноября 2016 г., 23:17
это вполне возможно. Я очень новичок в STM32 и новичок в 32 -битном MCU в целом. Вот почему я сначала спрашиваю здесь.
Rogerclark
Вторник 01 ноября 2016 г., 11:38
Mailhouse написал:это вполне возможно. Я очень новичок в STM32 и новичок в 32 -битном MCU в целом. Вот почему я сначала спрашиваю здесь.
Даниэфф
Ср. 02 ноября 2016 г., 6:03
Есть прерывание таймера в таймер.в, например:
void blink(timer_id_e timer, uint32_t counter) {
digitalWrite(13, !digitalRead(PB1));
}
void setup() {
pinMode(13, OUTPUT);
TimerPulseInit(TIM2_E, 36000, 1000, blink);
}
Mailhouse
Сб 12 ноября 2016 г. 2:24
Даниэфф написал:Есть прерывание таймера в таймер.в, например:
void blink(timer_id_e timer, uint32_t counter) {
digitalWrite(13, !digitalRead(PB1));
}
void setup() {
pinMode(13, OUTPUT);
TimerPulseInit(TIM2_E, 36000, 1000, blink);
}