@@ -28,6 +28,9 @@ USBD_HandleTypeDef hUSBD_Device_HID;
2828
2929static bool HID_keyboard_initialized = false;
3030static bool HID_mouse_initialized = false;
31+ #if defined(ICACHE ) && defined (HAL_ICACHE_MODULE_ENABLED ) && !defined(HAL_ICACHE_MODULE_DISABLED )
32+ static bool icache_enabled = false;
33+ #endif
3134
3235/**
3336 * @brief Initialize USB devices
@@ -36,6 +39,15 @@ static bool HID_mouse_initialized = false;
3639 */
3740void HID_Composite_Init (HID_Interface device )
3841{
42+ #if defined(ICACHE ) && defined (HAL_ICACHE_MODULE_ENABLED ) && !defined(HAL_ICACHE_MODULE_DISABLED )
43+ if (HAL_ICACHE_IsEnabled () == 1 ) {
44+ icache_enabled = true;
45+ /* Disable instruction cache prior to internal cacheable memory update */
46+ if (HAL_ICACHE_Disable () != HAL_OK ) {
47+ Error_Handler ();
48+ }
49+ }
50+ #endif /* ICACHE && HAL_ICACHE_MODULE_ENABLED && !HAL_ICACHE_MODULE_DISABLED */
3951 if (IS_HID_INTERFACE (device ) &&
4052 !HID_keyboard_initialized && !HID_mouse_initialized ) {
4153 /* Init Device Library */
@@ -72,6 +84,14 @@ void HID_Composite_DeInit(HID_Interface device)
7284 /* DeInit Device Library */
7385 USBD_DeInit (& hUSBD_Device_HID );
7486 }
87+ #if defined(ICACHE ) && defined (HAL_ICACHE_MODULE_ENABLED ) && !defined(HAL_ICACHE_MODULE_DISABLED )
88+ if (icache_enabled ) {
89+ /* Re-enable instruction cache */
90+ if (HAL_ICACHE_Enable () != HAL_OK ) {
91+ Error_Handler ();
92+ }
93+ }
94+ #endif /* ICACHE && HAL_ICACHE_MODULE_ENABLED && !HAL_ICACHE_MODULE_DISABLED */
7595 if (device == HID_KEYBOARD ) {
7696 HID_keyboard_initialized = false;
7797 }
0 commit comments