@@ -28,6 +28,7 @@ USBD_HandleTypeDef hUSBD_Device_HID;
28
28
29
29
static bool HID_keyboard_initialized = false;
30
30
static bool HID_mouse_initialized = false;
31
+ static bool icache_enabled = false;
31
32
32
33
/**
33
34
* @brief Initialize USB devices
@@ -36,6 +37,15 @@ static bool HID_mouse_initialized = false;
36
37
*/
37
38
void HID_Composite_Init (HID_Interface device )
38
39
{
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 */
39
49
if (IS_HID_INTERFACE (device ) &&
40
50
!HID_keyboard_initialized && !HID_mouse_initialized ) {
41
51
/* Init Device Library */
@@ -72,6 +82,14 @@ void HID_Composite_DeInit(HID_Interface device)
72
82
/* DeInit Device Library */
73
83
USBD_DeInit (& hUSBD_Device_HID );
74
84
}
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 */
75
93
if (device == HID_KEYBOARD ) {
76
94
HID_keyboard_initialized = false;
77
95
}
0 commit comments