Cześć,
Trochę to trwało, ale udało mi się rozwiązać problem z przerwaniami dla Nucleo F303RE.
Problem tkwi w kodzie dla Startup (startup_stm32.s) brak w nim odwołania do przerwań:
/******************************************************************************
*
* The minimal vector table for a Cortex-M. Note that the proper constructs
* must be placed on this to ensure that it ends up at physical address
* 0x0000.0000.
*
******************************************************************************/
.section .isr_vector,"a",%progbits
.type g_pfnVectors, %object
.size g_pfnVectors, .-g
Witam Serdecznie,
Jestem w trakcie kursu STM32 i nie mogę przejść etapu z przerwaniami zewnętrznymi, posiadam płytkę STM32F303RE, wszystko wykonane zgodnie z kursem zmienione pod płytkę STM32F3.
#include "stm32f30x.h"
volatile uint32_t timer_ms = 0;
void SysTick_Handler()
{
if (timer_ms) {
timer_ms--;
}
}
void delay_ms(int time)
{
timer_ms = time;
while (timer_ms) {};
}
void EXTI15_10_IRQHandler(void)
{
if (EXTI_GetITStatus(EXTI_Line13)) {
if (GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == 0) { // jesli przycisk jest przycisniety
GPIO_SetBits(GPIOA, GPIO_Pin_5); // zapal
Mam problem z obsługą przerwań w moim STM32F303RE, nie mogę zlokalizować problemu, wszystko wykonałem zgodnie z kursem, zmieniając oczywiście pod STM32F3, np.:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); //Aktywacja funkcji alternatywnych
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOC, EXTI_PinSource13); //wybór linii i portu
W pętlę while włożyłem kod z przesuwającą się diodą LED na linijce świetlnej, żeby móc obserwować pracę mikrokontrolera. Po naciśnięciu przycisku główny program się zatrzymuje i na tym koniec. Dioda LED na płytce Nucleo nie zapala się. Wygląda to tak jakby p
Dla osób które posiadają, tak jak ja, Nucleo seria z STM32F3xx, polecam:
http://www.st.com/web/en/resource/technical/document/application_note/DM00073522.pdf
Dokument opisuje jak przejść z STM32F1xx na STM32F3xx
Tak wygląda migająca dioda po przystosowaniu dla STM32F3xx
#include "stm32f30x.h"
void delay(int time)
{
int i;
for (i = 0; i<time*4000; i++){}
}
int main(void)
{
GPIO_InitTypeDef gpio;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
GPIO_StructInit(&gpio);
gpio.GPIO_Pin = GPIO_Pin_5;
gpio.GPIO_Mode = GPIO_Mode_OUT;
gpio.GPIO_OType = GPIO_OType_PP;
Ok, trochę to trwało, ale dałem radę , przeinstalowałem Eclipse, usuwając wszystkie pliki przy temu. W nowej instalacji wybrałem inną ścieżkę dla Workspace, bez polskich liter i się udało, kompilacja przeszła prawidłowo.
O, dopiero teraz zauważyłem, że sugerowałeś to co pomogło, zmiana katalogu Workspace ze ścieżką bez polskich liter.
Coś u mnie nie działa, mam płytkę STM32 NUCLEO-F303RE, podczas kompilacji pojawia się problem, że nie zlokalizował pliku: "stm32f30x.h" a on znajduje się przecież w CMSIS/device, jak to naprawić?