Interruption et messagerie fonctionnelle

This commit is contained in:
Thomas 2021-04-20 14:29:43 +02:00
parent 5837e17507
commit 4ba4e899c8
5 changed files with 186 additions and 165 deletions

View file

@ -86,6 +86,7 @@ void Error_Handler(void);
#define OTG_FS_VBUS_GPIO_Port GPIOJ
#define Audio_INT_Pin GPIO_PIN_6
#define Audio_INT_GPIO_Port GPIOD
#define Audio_INT_EXTI_IRQn EXTI9_5_IRQn
#define NC1_Pin GPIO_PIN_8
#define NC1_GPIO_Port GPIOI
#define LCD_DE_Pin GPIO_PIN_7
@ -132,12 +133,15 @@ void Error_Handler(void);
#define VCP_TX_GPIO_Port GPIOA
#define RCC_OSC32_OUT_Pin GPIO_PIN_15
#define RCC_OSC32_OUT_GPIO_Port GPIOC
#define BP_interrupt1_Pin GPIO_PIN_11
#define BP_interrupt1_GPIO_Port GPIOI
#define LCD_G6_Pin GPIO_PIN_1
#define LCD_G6_GPIO_Port GPIOK
#define LCD_G7_Pin GPIO_PIN_2
#define LCD_G7_GPIO_Port GPIOK
#define BP1_Pin GPIO_PIN_8
#define BP1_GPIO_Port GPIOA
#define PB_Pin GPIO_PIN_8
#define PB_GPIO_Port GPIOA
#define PB_EXTI_IRQn EXTI9_5_IRQn
#define OSC_25M_Pin GPIO_PIN_0
#define OSC_25M_GPIO_Port GPIOH
#define LCD_INT_Pin GPIO_PIN_13

View file

@ -53,6 +53,7 @@ void MemManage_Handler(void);
void BusFault_Handler(void);
void UsageFault_Handler(void);
void DebugMon_Handler(void);
void EXTI9_5_IRQHandler(void);
void TIM6_DAC_IRQHandler(void);
void ETH_IRQHandler(void);
void LTDC_IRQHandler(void);

View file

@ -75,7 +75,6 @@ osThreadId GameMasterHandle;
osThreadId Joueur_1Handle;
osThreadId Block_EnemieHandle;
osThreadId ProjectileHandle;
osThreadId IRQ_BPHandle;
osMessageQId Queue_JHandle;
osMessageQId Queue_NHandle;
osMessageQId Queue_FHandle;
@ -105,7 +104,6 @@ void f_GameMaster(void const * argument);
void f_Joueur_1(void const * argument);
void f_block_enemie(void const * argument);
void f_projectile(void const * argument);
void f_IRQ_BP(void const * argument);
/* USER CODE BEGIN PFP */
@ -176,7 +174,6 @@ uint32_t Limit_ennemis_x = 50;
int main(void)
{
/* USER CODE BEGIN 1 */
char text[50] = {};
static TS_StateTypeDef TS_State;
ADC_ChannelConfTypeDef sConfig = {0};
sConfig.Rank = ADC_REGULAR_RANK_1;
@ -252,7 +249,7 @@ int main(void)
Queue_JHandle = osMessageCreate(osMessageQ(Queue_J), NULL);
/* definition and creation of Queue_N */
osMessageQDef(Queue_N, 16, uint16_t);
osMessageQDef(Queue_N, 3, struct Missile);
Queue_NHandle = osMessageCreate(osMessageQ(Queue_N), NULL);
/* definition and creation of Queue_F */
@ -284,10 +281,6 @@ int main(void)
osThreadDef(Projectile, f_projectile, osPriorityNormal, 0, 128);
ProjectileHandle = osThreadCreate(osThread(Projectile), NULL);
/* definition and creation of IRQ_BP */
osThreadDef(IRQ_BP, f_IRQ_BP, osPriorityAboveNormal, 0, 128);
IRQ_BPHandle = osThreadCreate(osThread(IRQ_BP), NULL);
/* USER CODE BEGIN RTOS_THREADS */
/* add threads, ... */
/* USER CODE END RTOS_THREADS */
@ -301,12 +294,12 @@ int main(void)
while (1)
{
/* Code de base */
HAL_GPIO_WritePin(LED13_GPIO_Port, LED13_Pin,
HAL_GPIO_ReadPin(BP1_GPIO_Port, BP1_Pin));
HAL_GPIO_WritePin(LED14_GPIO_Port, LED14_Pin,
HAL_GPIO_ReadPin(BP2_GPIO_Port, BP2_Pin));
sprintf(text, "BP1 : %d", HAL_GPIO_ReadPin(BP1_GPIO_Port, BP1_Pin));
BSP_LCD_DisplayStringAtLine(5, (uint8_t *)text);
// HAL_GPIO_WritePin(LED13_GPIO_Port, LED13_Pin,
// HAL_GPIO_ReadPin(BP1_GPIO_Port, BP1_Pin));
// HAL_GPIO_WritePin(LED14_GPIO_Port, LED14_Pin,
// HAL_GPIO_ReadPin(BP2_GPIO_Port, BP2_Pin));
// sprintf(text, "BP1 : %d", HAL_GPIO_ReadPin(BP1_GPIO_Port, BP1_Pin));
// BSP_LCD_DisplayStringAtLine(5, (uint8_t *)text);
;
@ -1137,11 +1130,11 @@ static void MX_GPIO_Init(void)
GPIO_InitStruct.Alternate = GPIO_AF10_OTG_HS;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/*Configure GPIO pins : BP2_Pin BP1_Pin */
GPIO_InitStruct.Pin = BP2_Pin|BP1_Pin;
/*Configure GPIO pin : BP2_Pin */
GPIO_InitStruct.Pin = BP2_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
HAL_GPIO_Init(BP2_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pins : LED14_Pin LED15_Pin */
GPIO_InitStruct.Pin = LED14_Pin|LED15_Pin;
@ -1226,6 +1219,18 @@ static void MX_GPIO_Init(void)
GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
HAL_GPIO_Init(VCP_TX_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pin : BP_interrupt1_Pin */
GPIO_InitStruct.Pin = BP_interrupt1_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(BP_interrupt1_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pin : PB_Pin */
GPIO_InitStruct.Pin = PB_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(PB_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pin : LCD_INT_Pin */
GPIO_InitStruct.Pin = LCD_INT_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING;
@ -1293,10 +1298,25 @@ static void MX_GPIO_Init(void)
GPIO_InitStruct.Alternate = GPIO_AF10_OTG_HS;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/* EXTI interrupt init*/
HAL_NVIC_SetPriority(EXTI9_5_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
}
/* USER CODE BEGIN 4 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
/* Prevent unused argument(s) compilation warning */
BaseType_t pxHigherPriorityTaskWoken = pdTRUE;
// &pxHigherPriorityTaskWoken =
struct Missile missile = {joueur.x, joueur.y, 1, 0, 1, LCD_COLOR_LIGHTBLUE, 2, 1};
HAL_GPIO_TogglePin(LED13_GPIO_Port, LED13_Pin);
xQueueSendFromISR(Queue_NHandle, &missile, &pxHigherPriorityTaskWoken);
/* NOTE: This function Should not be modified, when the callback is needed,
the HAL_GPIO_EXTI_Callback could be implemented in the user file
*/
}
/* USER CODE END 4 */
@ -1493,7 +1513,7 @@ void f_projectile(void const * argument)
{
/* USER CODE BEGIN f_projectile */
TickType_t xLastWakeTime;
const TickType_t xPeriodeTache = 5000;
const TickType_t xPeriodeTache = 50000;
/* Infinite loop */
struct Missile liste_missile[20];
struct Missile missile;
@ -1507,8 +1527,8 @@ void f_projectile(void const * argument)
for (;;)
{
xQueueReceive(Queue_NHandle, &missile, 0);
if (missile.valide == 1){
if (xQueueReceive(Queue_NHandle, &missile, 0) == pdPASS)
{
liste_missile[indice++] = missile;
}
@ -1519,7 +1539,7 @@ void f_projectile(void const * argument)
if (liste_missile[i].valide == 1)
{
// Si le missile appartient au joueur :
if (liste_missile[i].equipe == 0)
if (liste_missile[i].equipe == 1)
{
if (liste_missile[i].x >= Limit_ennemis_x)
{
@ -1529,10 +1549,14 @@ void f_projectile(void const * argument)
if ((liste_missile[i].x > 1)&&(liste_missile[i].x < LCD_HEIGHT-1)&&(liste_missile[i].y < LCD_WIDTH-1)&&(liste_missile[i].y > 1))
{
BSP_LCD_DrawPixel(liste_missile[i].x, liste_missile[i].y, LCD_COLOR_BACKGROUND);
//BSP_LCD_DrawPixel(liste_missile[i].x, liste_missile[i].y, LCD_COLOR_BACKGROUND);
BSP_LCD_SetTextColor(LCD_COLOR_BACKGROUND);
BSP_LCD_FillRect(joueur.x, joueur.y, 20, 20);
liste_missile[i].x = liste_missile[i].x + liste_missile[i].dx ;
liste_missile[i].y = liste_missile[i].y + liste_missile[i].dy;
BSP_LCD_DrawPixel(liste_missile[i].x, liste_missile[i].y, liste_missile[i].color);
//BSP_LCD_DrawPixel(liste_missile[i].x, liste_missile[i].y, liste_missile[i].color);
BSP_LCD_SetTextColor(liste_missile[i].color);
BSP_LCD_FillRect(liste_missile[i].x, liste_missile[i].y, 20, 20);
}
//TODO test sur tous les ennemis
else
@ -1542,7 +1566,7 @@ void f_projectile(void const * argument)
}
}
// Si le missile appartient aux ennemis
else if (liste_missile[i].equipe == 1)
else if (liste_missile[i].equipe == 0)
{
if ((liste_missile[i].x == joueur.x)&&(liste_missile[i].y == joueur.y))
{
@ -1573,38 +1597,6 @@ void f_projectile(void const * argument)
/* USER CODE END f_projectile */
}
/* USER CODE BEGIN Header_f_IRQ_BP */
/**
* @brief Function implementing the IRQ_BP thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_f_IRQ_BP */
void f_IRQ_BP(void const * argument)
{
/* USER CODE BEGIN f_IRQ_BP */
TickType_t xLastWakeTime;
// Faudrait convertir en ms mais jsp comment
const TickType_t xPeriodeTache = 10;
/* Infinite loop */
for(;;)
{
if (HAL_GPIO_ReadPin(BP1_GPIO_Port, BP1_Pin)==0){
struct Missile missile = {joueur.x, joueur.y, 1, 0, 1, LCD_COLOR_LIGHTBLUE, 2, 1};
HAL_GPIO_WritePin(LED13_GPIO_Port, LED13_Pin,1);
xQueueSend(Queue_NHandle, &missile,0);
}
if(HAL_GPIO_ReadPin(BP2_GPIO_Port, BP2_Pin) ==0){
struct Missile missile = {joueur.x, joueur.y, 0, 1, 1, LCD_COLOR_YELLOW , 2, 1};
HAL_GPIO_WritePin(LED14_GPIO_Port, LED14_Pin,1);
xQueueSend(Queue_NHandle, &missile,0);
}
vTaskDelayUntil(&xLastWakeTime, xPeriodeTache);
}
/* USER CODE END f_IRQ_BP */
}
/**
* @brief Period elapsed callback in non blocking mode
* @note This function is called when TIM6 interrupt took place, inside

View file

@ -163,6 +163,20 @@ void DebugMon_Handler(void)
/* please refer to the startup file (startup_stm32f7xx.s). */
/******************************************************************************/
/**
* @brief This function handles EXTI line[9:5] interrupts.
*/
void EXTI9_5_IRQHandler(void)
{
/* USER CODE BEGIN EXTI9_5_IRQn 0 */
/* USER CODE END EXTI9_5_IRQn 0 */
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_8);
/* USER CODE BEGIN EXTI9_5_IRQn 1 */
/* USER CODE END EXTI9_5_IRQn 1 */
}
/**
* @brief This function handles TIM6 global interrupt, DAC1 and DAC2 underrun error interrupts.
*/

View file

@ -12,8 +12,8 @@ ETH.MediaInterface=ETH_MEDIA_INTERFACE_RMII
FREERTOS.FootprintOK=true
FREERTOS.INCLUDE_vTaskDelayUntil=1
FREERTOS.IPParameters=Tasks01,configUSE_APPLICATION_TASK_TAG,configUSE_RECURSIVE_MUTEXES,configUSE_COUNTING_SEMAPHORES,configUSE_IDLE_HOOK,configUSE_MALLOC_FAILED_HOOK,configCHECK_FOR_STACK_OVERFLOW,configTOTAL_HEAP_SIZE,FootprintOK,Queues01,INCLUDE_vTaskDelayUntil
FREERTOS.Queues01=Queue_J,16,uint16_t,0,Dynamic,NULL,NULL;Queue_N,16,uint16_t,0,Dynamic,NULL,NULL;Queue_F,16,uint16_t,0,Dynamic,NULL,NULL;Queue_E,16,uint16_t,0,Dynamic,NULL,NULL
FREERTOS.Tasks01=GameMaster,0,128,f_GameMaster,Default,NULL,Dynamic,NULL,NULL;Joueur_1,0,128,f_Joueur_1,Default,NULL,Dynamic,NULL,NULL;Block_Enemie,-3,128,f_block_enemie,Default,NULL,Dynamic,NULL,NULL;Projectile,0,128,f_projectile,Default,NULL,Dynamic,Dynamic,NULL;IRQ_BP,1,128,f_IRQ_BP,Default,NULL,Dynamic,NULL,NULL
FREERTOS.Queues01=Queue_J,16,uint16_t,0,Dynamic,NULL,NULL;Queue_N,3,struct Missile,0,Dynamic,NULL,NULL;Queue_F,16,uint16_t,0,Dynamic,NULL,NULL;Queue_E,16,uint16_t,0,Dynamic,NULL,NULL
FREERTOS.Tasks01=GameMaster,0,128,f_GameMaster,Default,NULL,Dynamic,NULL,NULL;Joueur_1,0,128,f_Joueur_1,Default,NULL,Dynamic,NULL,NULL;Block_Enemie,-3,128,f_block_enemie,Default,NULL,Dynamic,NULL,NULL;Projectile,0,128,f_projectile,Default,NULL,Dynamic,Dynamic,NULL
FREERTOS.configCHECK_FOR_STACK_OVERFLOW=2
FREERTOS.configTOTAL_HEAP_SIZE=32768
FREERTOS.configUSE_APPLICATION_TASK_TAG=1
@ -70,62 +70,63 @@ Mcu.Package=TFBGA216
Mcu.Pin0=PE4
Mcu.Pin1=PE3
Mcu.Pin10=PA13
Mcu.Pin100=PA1
Mcu.Pin101=PA0/WKUP
Mcu.Pin102=PA4
Mcu.Pin103=PC4
Mcu.Pin104=PF13
Mcu.Pin105=PG0
Mcu.Pin106=PJ3
Mcu.Pin107=PE8
Mcu.Pin108=PG5
Mcu.Pin109=PG4
Mcu.Pin100=PH12
Mcu.Pin101=PA1
Mcu.Pin102=PA0/WKUP
Mcu.Pin103=PA4
Mcu.Pin104=PC4
Mcu.Pin105=PF13
Mcu.Pin106=PG0
Mcu.Pin107=PJ3
Mcu.Pin108=PE8
Mcu.Pin109=PG5
Mcu.Pin11=PE5
Mcu.Pin110=PH7
Mcu.Pin111=PH9
Mcu.Pin112=PH11
Mcu.Pin113=PA2
Mcu.Pin114=PA5
Mcu.Pin115=PC5
Mcu.Pin116=PF14
Mcu.Pin117=PJ2
Mcu.Pin118=PF11
Mcu.Pin119=PE9
Mcu.Pin110=PG4
Mcu.Pin111=PH7
Mcu.Pin112=PH9
Mcu.Pin113=PH11
Mcu.Pin114=PA2
Mcu.Pin115=PA5
Mcu.Pin116=PC5
Mcu.Pin117=PF14
Mcu.Pin118=PJ2
Mcu.Pin119=PF11
Mcu.Pin12=PE6
Mcu.Pin120=PE11
Mcu.Pin121=PE14
Mcu.Pin122=PH6
Mcu.Pin123=PH8
Mcu.Pin124=PH10
Mcu.Pin125=PA3
Mcu.Pin126=PA7
Mcu.Pin127=PB1
Mcu.Pin128=PB0
Mcu.Pin129=PJ0
Mcu.Pin120=PE9
Mcu.Pin121=PE11
Mcu.Pin122=PE14
Mcu.Pin123=PH6
Mcu.Pin124=PH8
Mcu.Pin125=PH10
Mcu.Pin126=PA3
Mcu.Pin127=PA7
Mcu.Pin128=PB1
Mcu.Pin129=PB0
Mcu.Pin13=PG13
Mcu.Pin130=PJ1
Mcu.Pin131=PE7
Mcu.Pin132=PE10
Mcu.Pin133=PE12
Mcu.Pin134=PE15
Mcu.Pin135=PE13
Mcu.Pin136=PB11
Mcu.Pin137=PB14
Mcu.Pin138=PB15
Mcu.Pin139=VP_CRC_VS_CRC
Mcu.Pin130=PJ0
Mcu.Pin131=PJ1
Mcu.Pin132=PE7
Mcu.Pin133=PE10
Mcu.Pin134=PE12
Mcu.Pin135=PE15
Mcu.Pin136=PE13
Mcu.Pin137=PB11
Mcu.Pin138=PB14
Mcu.Pin139=PB15
Mcu.Pin14=PB9
Mcu.Pin140=VP_DMA2D_VS_DMA2D
Mcu.Pin141=VP_FREERTOS_VS_CMSIS_V1
Mcu.Pin142=VP_LWIP_VS_Enabled
Mcu.Pin143=VP_RNG_VS_RNG
Mcu.Pin144=VP_SYS_VS_tim6
Mcu.Pin145=VP_TIM1_VS_ClockSourceINT
Mcu.Pin146=VP_TIM2_VS_ClockSourceINT
Mcu.Pin147=VP_TIM3_VS_ClockSourceINT
Mcu.Pin148=VP_TIM3_VS_ClockSourceITR
Mcu.Pin149=VP_TIM5_VS_ClockSourceINT
Mcu.Pin140=VP_CRC_VS_CRC
Mcu.Pin141=VP_DMA2D_VS_DMA2D
Mcu.Pin142=VP_FREERTOS_VS_CMSIS_V1
Mcu.Pin143=VP_LWIP_VS_Enabled
Mcu.Pin144=VP_RNG_VS_RNG
Mcu.Pin145=VP_SYS_VS_tim6
Mcu.Pin146=VP_TIM1_VS_ClockSourceINT
Mcu.Pin147=VP_TIM2_VS_ClockSourceINT
Mcu.Pin148=VP_TIM3_VS_ClockSourceINT
Mcu.Pin149=VP_TIM3_VS_ClockSourceITR
Mcu.Pin15=PB7
Mcu.Pin150=VP_TIM8_VS_ClockSourceINT
Mcu.Pin150=VP_TIM5_VS_ClockSourceINT
Mcu.Pin151=VP_TIM8_VS_ClockSourceINT
Mcu.Pin16=PG15
Mcu.Pin17=PG11
Mcu.Pin18=PJ13
@ -164,61 +165,61 @@ Mcu.Pin47=PI0
Mcu.Pin48=PA9
Mcu.Pin49=PC15/OSC32_OUT
Mcu.Pin5=PB8
Mcu.Pin50=PK1
Mcu.Pin51=PK2
Mcu.Pin52=PA8
Mcu.Pin53=PH0/OSC_IN
Mcu.Pin54=PF2
Mcu.Pin55=PI13
Mcu.Pin56=PI15
Mcu.Pin57=PJ11
Mcu.Pin58=PK0
Mcu.Pin59=PC7
Mcu.Pin50=PI11
Mcu.Pin51=PK1
Mcu.Pin52=PK2
Mcu.Pin53=PA8
Mcu.Pin54=PH0/OSC_IN
Mcu.Pin55=PF2
Mcu.Pin56=PI13
Mcu.Pin57=PI15
Mcu.Pin58=PJ11
Mcu.Pin59=PK0
Mcu.Pin6=PB5
Mcu.Pin60=PH1/OSC_OUT
Mcu.Pin61=PF3
Mcu.Pin62=PI14
Mcu.Pin63=PH4
Mcu.Pin64=PJ8
Mcu.Pin65=PJ10
Mcu.Pin66=PG8
Mcu.Pin67=PC6
Mcu.Pin68=PF4
Mcu.Pin69=PH5
Mcu.Pin60=PC7
Mcu.Pin61=PH1/OSC_OUT
Mcu.Pin62=PF3
Mcu.Pin63=PI14
Mcu.Pin64=PH4
Mcu.Pin65=PJ8
Mcu.Pin66=PJ10
Mcu.Pin67=PG8
Mcu.Pin68=PC6
Mcu.Pin69=PF4
Mcu.Pin7=PB4
Mcu.Pin70=PH3
Mcu.Pin71=PJ7
Mcu.Pin72=PJ9
Mcu.Pin73=PG7
Mcu.Pin74=PF7
Mcu.Pin75=PF5
Mcu.Pin76=PH2
Mcu.Pin77=PJ6
Mcu.Pin78=PD15
Mcu.Pin79=PB13
Mcu.Pin70=PH5
Mcu.Pin71=PH3
Mcu.Pin72=PJ7
Mcu.Pin73=PJ9
Mcu.Pin74=PG7
Mcu.Pin75=PF7
Mcu.Pin76=PF5
Mcu.Pin77=PH2
Mcu.Pin78=PJ6
Mcu.Pin79=PD15
Mcu.Pin8=PA15
Mcu.Pin80=PD10
Mcu.Pin81=PF10
Mcu.Pin82=PF9
Mcu.Pin83=PF8
Mcu.Pin84=PC3
Mcu.Pin85=PD14
Mcu.Pin86=PB12
Mcu.Pin87=PD9
Mcu.Pin88=PD8
Mcu.Pin89=PC0
Mcu.Pin80=PB13
Mcu.Pin81=PD10
Mcu.Pin82=PF10
Mcu.Pin83=PF9
Mcu.Pin84=PF8
Mcu.Pin85=PC3
Mcu.Pin86=PD14
Mcu.Pin87=PB12
Mcu.Pin88=PD9
Mcu.Pin89=PD8
Mcu.Pin9=PA14
Mcu.Pin90=PC1
Mcu.Pin91=PC2
Mcu.Pin92=PF12
Mcu.Pin93=PG1
Mcu.Pin94=PF15
Mcu.Pin95=PJ4
Mcu.Pin96=PG3
Mcu.Pin97=PG2
Mcu.Pin98=PJ5
Mcu.Pin99=PH12
Mcu.PinsNb=151
Mcu.Pin90=PC0
Mcu.Pin91=PC1
Mcu.Pin92=PC2
Mcu.Pin93=PF12
Mcu.Pin94=PG1
Mcu.Pin95=PF15
Mcu.Pin96=PJ4
Mcu.Pin97=PG3
Mcu.Pin98=PG2
Mcu.Pin99=PJ5
Mcu.PinsNb=152
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32F746NGHx
@ -227,6 +228,7 @@ MxDb.Version=DB.6.0.10
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.ETH_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true
NVIC.EXTI9_5_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true
NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.LTDC_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true
@ -278,9 +280,9 @@ PA5.Signal=USB_OTG_HS_ULPI_CK
PA7.Mode=RMII
PA7.Signal=ETH_CRS_DV
PA8.GPIOParameters=GPIO_Label
PA8.GPIO_Label=BP1
PA8.GPIO_Label=PB
PA8.Locked=true
PA8.Signal=GPIO_Input
PA8.Signal=GPXTI8
PA9.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label,GPIO_Mode
PA9.GPIO_Label=VCP_TX [STM32F103CBT6_PA3]
PA9.GPIO_Mode=GPIO_MODE_AF_PP
@ -555,6 +557,10 @@ PI10.GPIO_Label=LCD_HSYNC [RK043FN48H-CT672B_HSYNC]
PI10.Locked=true
PI10.Mode=RGB888
PI10.Signal=LTDC_HSYNC
PI11.GPIOParameters=GPIO_Label
PI11.GPIO_Label=BP_interrupt1
PI11.Locked=true
PI11.Signal=GPXTI11
PI12.GPIOParameters=PinState,GPIO_Label
PI12.GPIO_Label=LCD_DISP [RK043FN48H-CT672B_DISP]
PI12.Locked=true
@ -883,10 +889,14 @@ SH.FMC_SDNRAS.0=FMC_SDNRAS,12b-sda1
SH.FMC_SDNRAS.ConfNb=1
SH.FMC_SDNWE.0=FMC_SDNWE,12b-sda1
SH.FMC_SDNWE.ConfNb=1
SH.GPXTI11.0=GPIO_EXTI11
SH.GPXTI11.ConfNb=1
SH.GPXTI13.0=GPIO_EXTI13
SH.GPXTI13.ConfNb=1
SH.GPXTI6.0=GPIO_EXTI6
SH.GPXTI6.ConfNb=1
SH.GPXTI8.0=GPIO_EXTI8
SH.GPXTI8.ConfNb=1
SH.S_TIM3_CH1.0=TIM3_CH1,PWM Generation1 CH1
SH.S_TIM3_CH1.ConfNb=1
SH.S_TIM8_CH4.0=TIM8_CH4,PWM Generation4 CH4