Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?
Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?
Jag tycker det låter som du inte nollställer interuptflaggan i interuptet, då kommer det köras hela tiden
Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?
Idiotisk fråga, men... Har TS_IRQ_Pin pull up eller down?
Vad har GPIO_Pin för input? Om inget, finns det pull up eller down?
Vad har GPIO_Pin för input? Om inget, finns det pull up eller down?
Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?
Den automatgenererade koden i CubeMX har en inbyggd clear funktion.
Men nu när du nämnde det så konstaterar jag att TS har gjort våld på den, så det du säger stämmer vad jag kan se.
Jag trodde TS förstod det rudimentära med CubeMX, att man bara skev kod mellan
Kod: Markera allt
/* USER CODE BEGIN */
/* USER CODE END */
Så verkar det inte vara.
Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?
Jasså? Hur då nollställa? Den där flaggan är inte för interrupt.
Min kod är mellan user begin och user end. Alla interrupt-funktioner i STM32 har datatypen __weak. Alltså man skriver över funktionen med andra ord.ToPNoTCH skrev: ↑16 juni 2021, 23:19:00Den automatgenererade koden i CubeMX har en inbyggd clear funktion.
Men nu när du nämnde det så konstaterar jag att TS har gjort våld på den, så det du säger stämmer vad jag kan se.
Jag trodde TS förstod det rudimentära med CubeMX, att man bara skev kod mellanoch inte tar bort i övrigt.Kod: Markera allt
/* USER CODE BEGIN */ /* USER CODE END */
Så verkar det inte vara.
Gpio_Pin är bara en variabel som ett argument. Beroende på vilken pinne som har interrupt, så anropas funktionen med ett unikt interrupt. Mycket smart av ST.
Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?
Om du skriver över funktionen (istället för att lägga till i befintliga "USER CODE") så behöver du veta vad som skall göras. Exempelvis i ditt fall cleara interrupt flaggan.
Gör om med ett blank projekt med en enda pinne med extern interrupt, och kolla den automat generade koden igen följ den hela vägen så kommer det klarna.
I "stm32f_xx_it.h" så framgår det vilken rutin som kopplas till den interrupt-lina som den valda pinnen ligger på.
Du kommer se att det slutar med ett anrop som rensar flaggan.
Ex.
Och du kommer se vart du skall lägga din kod för att inte sabba det.
Gör om med ett blank projekt med en enda pinne med extern interrupt, och kolla den automat generade koden igen följ den hela vägen så kommer det klarna.
I "stm32f_xx_it.h" så framgår det vilken rutin som kopplas till den interrupt-lina som den valda pinnen ligger på.
Du kommer se att det slutar med ett anrop som rensar flaggan.
Ex.
Kod: Markera allt
/**
* @brief This function handles EXTI interrupt request.
* @param GPIO_Pin: Specifies the pins connected EXTI line
* @retval None
*/
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
{
/* EXTI line interrupt detected */
if (__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != 0x00u)
{
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
HAL_GPIO_EXTI_Callback(GPIO_Pin);
}
}
Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?
Fast USER CODE är bara till för att placera koden där CubeMX ej skriver över.
Tanken med __weak är att man ska skriva över funktionen.
Ja. Detta anrop anropas, men trots ändå så anropas min interrupt igen.
Tanken med __weak är att man ska skriva över funktionen.
Ja. Detta anrop anropas, men trots ändå så anropas min interrupt igen.
Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin) var inte med i den första koden du skickade, har du lagt till det nu?
Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?
Detta måste jag dubbelkolla!
Edit: Ja den fanns med när jag aktiverade NVIC.
Edit: Ja den fanns med när jag aktiverade NVIC.
Kod: Markera allt
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
{
/* EXTI line interrupt detected */
if(__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != 0x00u)
{
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
HAL_GPIO_EXTI_Callback(GPIO_Pin);
}
}
-
- Inlägg: 1400
- Blev medlem: 29 januari 2011, 21:06:30
- Ort: Lapplandet
Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?
Använder du edge- eller level-trigger?
Om det är level måste du förmodligen säga åt din externa enhet att sluta dra linjen låg.
Om det är level måste du förmodligen säga åt din externa enhet att sluta dra linjen låg.
Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?
Jag har edge high->low.
Men jag skulle nog tro att SPI funktionen och NVIC(interrupt) gillar inte varandra.
Det fungerar utmärkt att läsa utav pinnen manuellt annars utan interrupt.
Men jag skulle nog tro att SPI funktionen och NVIC(interrupt) gillar inte varandra.
Det fungerar utmärkt att läsa utav pinnen manuellt annars utan interrupt.
Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?
Har ni varit med om detta någon gång? När ni passerar en stor uint8_t plot[1584] igenom denna funktion.
Då fungerar det OK om funktionen befinner sig i main.c där uint8_t plot[1584] deklareras.
Men om funktionen void test_func(uint8_t plot[]) befinner sig i en annan .c fil och importeras via en annan .h header fil. Då får jag hardfault på något helt annat ställe som har inget med funktionen att göra.
I detta fall så får jag hardfault när jag deklarerar USB funktionen i STM32CubeIDE.
När jag lämnar denna funktion.
Kod: Markera allt
void test_func(uint8_t plot[]){
return;
}
Men om funktionen void test_func(uint8_t plot[]) befinner sig i en annan .c fil och importeras via en annan .h header fil. Då får jag hardfault på något helt annat ställe som har inget med funktionen att göra.
I detta fall så får jag hardfault när jag deklarerar USB funktionen i STM32CubeIDE.
När jag lämnar denna funktion.
Kod: Markera allt
HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd)
Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?
Fungerar det för en (mycket) lägre storlek än [1584]?
*Om* det gör det så har du kanske svaret där...
*Om* det gör det så har du kanske svaret där...
- Klas-Kenny
- Inlägg: 11390
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?
När du skickar in arrayen i en funktion sådär så landar den på stacken.
Förmodligen är din stack inte stor nog för det, så den börjar skriva in på redan använda minnesplatser (utanför stacken).
Förmodligen är din stack inte stor nog för det, så den börjar skriva in på redan använda minnesplatser (utanför stacken).
Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?
Jag misstänker detta. Jag tyckter att jag har mycket minne kvar att jobba med.Klas-Kenny skrev: ↑20 juni 2021, 22:30:51 När du skickar in arrayen i en funktion sådär så landar den på stacken.
Förmodligen är din stack inte stor nog för det, så den börjar skriva in på redan använda minnesplatser (utanför stacken).
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.