Sujet Le pub des programmeurs
- 1 925 réponses
- 117 participants
- 123 028 vues
- 130 followers
Anonyme
Chris Kazvon
Chris Kazvon
-------------------------------------------------
Introduction à Hornresp et Tutoriels - Tutoriels Vidéo pour Room EQ Wizard
miles1981
Audio Toolkit: http://www.audio-tk.com/
Chris Kazvon
je pense que j'ai pas dû prendre les bons / assez de fichiers
du coup je vais tester avec Ubuntu, y a qu'un seul fichier à télécharger, on peut pas se tromper !
je vous tiens au jus
Chris Kazvon
-------------------------------------------------
Introduction à Hornresp et Tutoriels - Tutoriels Vidéo pour Room EQ Wizard
.: Odon Quelconque :.
« What is full of redundancy or formula is predictably boring. What is free of all structure or discipline is randomly boring. In between lies art. » (Wendy Carlos)
Anonyme
Voici la boucle principale de l'application :
main.c
while (1)
{
/* USER CODE END WHILE */
if (toto && HAL_GPIO_ReadPin(B1_Pin, B1_GPIO_Port))
{
HAL_UART_Transmit(&huart2, "B=1\r\n", 6, 10);
}
if (toto && !HAL_GPIO_ReadPin(B1_Pin, B1_GPIO_Port))
{
HAL_UART_Transmit(&huart2, "B=0\r\n", 6, 10);
}
toto = 0;
/* USER CODE BEGIN 3 */
}/
Voici la configuration de l'interruption :
main.c
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
/* GPIO Ports Clock Enable */
[...]
/*Configure GPIO pin Output Level */
[...]
/*Configure GPIO pin : B1_Pin */
GPIO_InitStruct.Pin = B1_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING; //Interruption sur front montant (on) et descendant (off)
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(B1_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pin : LD2_Pin */
[...]
/* EXTI interrupt init*/
HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
}
stm32f3xx_it.c
void EXTI15_10_IRQHandler(void)
{
/* USER CODE BEGIN EXTI15_10_IRQn 0 */
toto = 1;
/* USER CODE END EXTI15_10_IRQn 0 */
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);
/* USER CODE BEGIN EXTI15_10_IRQn 1 */
/* USER CODE END EXTI15_10_IRQn 1 */
}
La variable toto est de type char et est définie dans le fichier main.h qui est inclus dans main.c mais aussi dans stm32f3xx_it.c
J'ai paramétré le type de detection sur front montant et descendent via la ligne
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING;
Le code tel quel fonctionne à peu près. C'est à dire que quand je presse le bouton, j'ai sur mon terminal "B=1" mais quand je le relache... aussi. Je ne comprends pas pourquoi... Quelqu'un a une idée ?
J'ai essayé avec HAL_GPIO_ReadPin(B1_Pin, B1_GPIO_Port) == 1 et HAL_GPIO_ReadPin(B1_Pin, B1_GPIO_Port) == 0 mais j'ai le même résultat.
[ Dernière édition du message le 13/01/2020 à 21:29:17 ]
Dr Pouet
D’ailleurs généralement sur les IHM c’est fait comme ça : il ne se passe rien quand on enfonce le bouton de la souris, c’est quand on le relâche que l’action est effectuée.
J'ai paramétré le type de detection sur front montant et descendent via la ligne
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING;
Le code tel quel fonctionne à peu près. C'est à dire que quand je presse le bouton, j'ai sur mon terminal "B=1" mais quand je le relache... aussi. Je ne comprends pas pourquoi... Quelqu'un a une idée ?
En fait je ne comprends pas le problème ; soit parce-que je ne comprends pas ce que tu veux obtenir, soit parce-que je ne comprends pas ce que tu obtiens.
[ Dernière édition du message le 13/01/2020 à 21:36:56 ]
Anonyme
Dans mon cas je shouaite que le message "B=1" soit envoyé sur le port série quand je presse le bouton et le message "B=0" quand je le relache.
[ Dernière édition du message le 13/01/2020 à 21:44:50 ]
Dr Pouet
redpill
GPIO_InitStruct.Pull = GPIO_NOPULL;
t'es sur que tu ne veux pas la pullup ? j'esperes que tu as une résistance en externe.
tu devrais laissé l'interuption modifier toto et lire le resultat dans la while loop et l'envoyer sur le port série.
méfie toi également l'interuption ne fait pas le distinguo entre rising et falling, c'est a toi de la faire lors de l'interruption (lire les registers de GPIO)
mais en générale un button sur un inter risque d'etre problématique a cause du rebond des contacts internes au switch. Il te faut une solution debounce.
rumorofsmoke.github.io/
[ Dernière édition du message le 13/01/2020 à 22:43:57 ]
Jimbass
https://www.instructables.com/id/STM32CubeMX-Button-Debounce-With-Interrupt/
http://www.emcu.it/STM32/STM32Discovery-Debounce/STM32Discovery-InputWithDebounce_Output_UART_SPI_SysTick.html
https://www.arduino.cc/en/tutorial/debounce
Musikmesser 2013 - Bullshit Gourous - Tocxic Instruments - festivals Foud'Rock, Metal Sphère et la Tour met les Watts
- < Liste des sujets
- Charte