@@ -28,6 +28,7 @@ USBD_HandleTypeDef hUSBD_Device_HID;
2828
2929static bool HID_keyboard_initialized = false;
3030static bool HID_mouse_initialized = false;
31+ static bool icache_enabled = false;
3132
3233/**
3334 * @brief Initialize USB devices
@@ -36,6 +37,15 @@ static bool HID_mouse_initialized = false;
3637 */
3738void HID_Composite_Init (HID_Interface device )
3839{
40+ #if defined(ICACHE ) && defined (HAL_ICACHE_MODULE_ENABLED ) && !defined(HAL_ICACHE_MODULE_DISABLED )
41+ if (HAL_ICACHE_IsEnabled () == 1 ) {
42+ icache_enabled = true;
43+ /* Disable instruction cache prior to internal cacheable memory update */
44+ if (HAL_ICACHE_Disable () != HAL_OK ) {
45+ Error_Handler ();
46+ }
47+ }
48+ #endif /* ICACHE && HAL_ICACHE_MODULE_ENABLED && !HAL_ICACHE_MODULE_DISABLED */
3949 if (IS_HID_INTERFACE (device ) &&
4050 !HID_keyboard_initialized && !HID_mouse_initialized ) {
4151 /* Init Device Library */
@@ -72,6 +82,14 @@ void HID_Composite_DeInit(HID_Interface device)
7282 /* DeInit Device Library */
7383 USBD_DeInit (& hUSBD_Device_HID );
7484 }
85+ #if defined(ICACHE ) && defined (HAL_ICACHE_MODULE_ENABLED ) && !defined(HAL_ICACHE_MODULE_DISABLED )
86+ if (icache_enabled ) {
87+ /* Re-enable instruction cache */
88+ if (HAL_ICACHE_Enable () != HAL_OK ) {
89+ Error_Handler ();
90+ }
91+ }
92+ #endif /* ICACHE && HAL_ICACHE_MODULE_ENABLED && !HAL_ICACHE_MODULE_DISABLED */
7593 if (device == HID_KEYBOARD ) {
7694 HID_keyboard_initialized = false;
7795 }
0 commit comments