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