chen
2024-07-29 13ee763a011697633a072a74a25c3eee9f40bb4f
初步提交,可以测距
已添加326个文件
131303 ■■■■■ 文件已修改
gcc/Makefile 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iar/settings/uwb_simple_example_MK8000 Release.jlink 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iar/uwb_simple_example.ewd 1530 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iar/uwb_simple_example.ewp 1226 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iar/uwb_simple_example.eww 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/EventRecorderStub.scvd 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/JLinkLog.txt 4115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/JLinkSettings.ini 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Listings/uwb_simple_example.map 6549 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/ExtDll.iex 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/board.d 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/cmp_svec.d 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/crc.d 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/dw_app.d 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/dw_app_anchor.d 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/global_param.d 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/libc.d 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/main.d 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/mk_adc.d 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/mk_aes.d 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/mk_calib.d 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/mk_clock.d 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/mk_dma.d 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/mk_dual_timer.d 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/mk_flash.d 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/mk_gpio.d 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/mk_io.d 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/mk_misc.d 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/mk_power.d 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/mk_reset.d 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/mk_rtc.d 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/mk_sleep_timer.d 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/mk_trace.d 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/mk_uart.d 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/mk_uwb.d 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/mk_wdt.d 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/pal_flash.d 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/pal_sys.d 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/pal_uart.d 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/pin_config.d 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/serial_at_cmd_app.d 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/simple_ds_twr_init.d 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/simple_ds_twr_init_sts.d 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/simple_ds_twr_resp.d 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/simple_ds_twr_resp_sts.d 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/simple_rx.d 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/simple_ss_twr_dw_init.d 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/simple_ss_twr_dw_resp.d 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/simple_tx.d 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/startup_mk800x.d 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/system_mk800x.d 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/usart.d 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/usart1.d 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/uwb_simple_example.axf 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/uwb_simple_example.build_log.htm 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/uwb_simple_example.htm 2150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/uwb_simple_example.lnp 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/uwb_simple_example_MK8000 Release.dep 1137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/wsf_assert.d 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/wsf_buf.d 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/wsf_bufio.d 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/wsf_heap.d 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/wsf_msg.d 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/wsf_nvm.d 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/wsf_os.d 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/wsf_queue.d 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/wsf_timer.d 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Objects/wsf_trace.d 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/Output/uwb_simple_example.bin 补丁 | 查看 | 原始文档 | blame | 历史
keil/dw_app_anchor.c 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/dw_app_anchor.h 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/CMSIS/Include/cmsis_armcc.h 885 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/CMSIS/Include/cmsis_armclang.h 1467 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/CMSIS/Include/cmsis_armclang_ltm.h 1893 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/CMSIS/Include/cmsis_compiler.h 283 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/CMSIS/Include/cmsis_gcc.h 2177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/CMSIS/Include/cmsis_iccarm.h 968 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/CMSIS/Include/cmsis_version.h 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/CMSIS/Include/core_cm0.h 952 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/board/board.c 463 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/board/board.h 244 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/algo/inc/MK8000_kf_top.h 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/algo/inc/lib_aoa.h 295 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/algo/inc/lib_kf.h 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/algo/inc/lib_pdoa_3d.h 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/algo/inc/lib_ranging.h 329 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/algo/inc/mk8000_present_interface.h 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/algo/inc/radar_cfar.h 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/algo/src/kf/MK8000_kf_top.c 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/algo/src/steering_vector/cmp_3D_svec_hex_sq4ant_az3el5_ch5.txt 9120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/algo/src/steering_vector/cmp_3D_svec_hex_sq4ant_az3el5_ch9.txt 9120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/algo/src/steering_vector/cmp_svec.c 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/algo/src/steering_vector/cmp_svec_hex_2ant_withzeros_ch5.txt 362 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/algo/src/steering_vector/cmp_svec_hex_2ant_withzeros_ch9.txt 362 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/algo/src/steering_vector/cmp_svec_hex_3ant_ch5.txt 543 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/algo/src/steering_vector/cmp_svec_hex_3ant_ch9.txt 543 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/algo/src/steering_vector/cmp_svec_hex_ch5.txt 724 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/algo/src/steering_vector/cmp_svec_hex_ch9.txt 724 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/algo/src/steering_vector/cmp_svec_hex_square4ant_ch5.txt 1440 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/algo/src/steering_vector/cmp_svec_hex_square4ant_ch9.txt 1440 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/inc/aoa.h 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/inc/aoa_task.h 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/inc/app.h 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/inc/app_task.h 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/inc/ranging_ccc.h 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/inc/ranging_ccc_task.h 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/inc/ranging_custom.h 379 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/inc/ranging_custom_task.h 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/inc/ranging_fira.h 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/inc/ranging_fira_task.h 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/inc/ranging_simple.h 289 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/inc/ranging_simple_task.h 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/inc/ranging_ss_twr.h 214 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/inc/ranging_ss_twr_task.h 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/inc/uci_tl_task.h 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/inc/ul_tdoa.h 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/inc/ul_tdoa_task.h 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/inc/uwb_audio.h 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/inc/uwb_audio_task.h 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/inc/uwb_data_transfer.h 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/inc/uwb_data_transfer_task.h 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/inc/uwb_radar.h 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/inc/uwb_radar_task.h 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/inc/uwb_test.h 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/inc/uwb_test_task.h 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/inc/uwb_trx.h 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/inc/uwb_trx_task.h 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/src/aoa.c 295 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/src/aoa_task.c 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/src/app.c 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/src/app_task.c 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/src/ranging_ccc.c 346 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/src/ranging_ccc_task.c 486 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/src/ranging_custom.c 1243 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/src/ranging_custom_task.c 548 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/src/ranging_fira.c 811 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/src/ranging_fira_task.c 558 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/src/ranging_simple.c 1012 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/src/ranging_simple_task.c 442 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/src/ranging_ss_twr.c 648 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/src/ranging_ss_twr_task.c 382 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/src/uci_tl_task.c 231 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/src/ul_tdoa.c 402 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/src/ul_tdoa_task.c 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/src/uwb_audio.c 786 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/src/uwb_audio_task.c 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/src/uwb_data_transfer.c 669 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/src/uwb_data_transfer_task.c 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/src/uwb_radar.c 299 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/src/uwb_radar_task.c 414 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/src/uwb_test.c 227 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/src/uwb_test_task.c 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/src/uwb_trx.c 193 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/app/src/uwb_trx_task.c 198 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/crc/crc.c 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/crc/crc.h 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/libc/libc.c 1068 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/libc/libc_rom.h 556 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/se/inc/T1.h 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/se/inc/phdriver.h 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/se/inc/se_api.h 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/se/inc/se_common.h 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/se/inc/uart_in_spi.h 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/se/src/T1.c 1670 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/se/src/phdriver.c 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/se/src/se_api.c 303 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/se/src/t1_split.c 319 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/se/src/tm_main.c 291 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/se/src/uart_in_spi.c 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/uci/inc/uci_tl_comm.h 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/uci/src/uci_spi_driver.c 354 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/uci/src/uci_uart_driver.c 266 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/utilities/lzma/7zTypes.h 568 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/utilities/lzma/Compiler.h 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/utilities/lzma/CpuArch.c 813 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/utilities/lzma/CpuArch.h 462 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/utilities/lzma/LzFind.c 1701 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/utilities/lzma/LzFind.h 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/utilities/lzma/LzHash.h 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/utilities/lzma/LzmaDec.c 1410 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/utilities/lzma/LzmaDec.h 239 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/utilities/lzma/LzmaEnc.c 3116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/utilities/lzma/LzmaEnc.h 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/utilities/lzma/Precomp.h 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/uwb/inc/lib_ccc.h 224 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/uwb/inc/lib_fira.h 456 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/uwb/inc/uwb_api.h 1357 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/uwb/inc/uwb_contention.h 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/uwb/inc/uwb_data.h 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/uwb/inc/uwb_fira_message.h 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/uwb/inc/uwb_hybrid.h 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/uwb/inc/uwb_link_layer.h 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/uwb/inc/uwb_twr.h 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/include/platform/pal_flash.h 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/include/platform/pal_sys.h 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/include/platform/pal_types.h 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/include/platform/pal_uart.h 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/include/wsf_assert.h 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/include/wsf_buf.h 233 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/include/wsf_bufio.h 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/include/wsf_cs.h 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/include/wsf_heap.h 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/include/wsf_math.h 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/include/wsf_msg.h 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/include/wsf_nvm.h 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/include/wsf_os.h 228 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/include/wsf_queue.h 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/include/wsf_timer.h 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/include/wsf_trace.h 308 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/include/wsf_types.h 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/sources/platform/pal_flash.c 235 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/sources/platform/pal_sys.c 219 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/sources/platform/pal_uart.c 211 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/sources/port/baremetal/wsf_assert.c 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/sources/port/baremetal/wsf_buf.c 527 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/sources/port/baremetal/wsf_bufio.c 289 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/sources/port/baremetal/wsf_heap.c 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/sources/port/baremetal/wsf_msg.c 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/sources/port/baremetal/wsf_nvm.c 405 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/sources/port/baremetal/wsf_os.c 375 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/sources/port/baremetal/wsf_queue.c 355 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/sources/port/baremetal/wsf_timer.c 414 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/components/wsf/sources/port/baremetal/wsf_trace.c 271 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/devices/MK800X/Include/MK800X.h 2268 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/devices/MK800X/Include/system_MK800X.h 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/devices/MK800X/Source/ARM/MK800X_ac6.sct 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/devices/MK800X/Source/ARM/MK800X_ac6_copy.sct 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/devices/MK800X/Source/GCC/gcc_arm.ld 328 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/devices/MK800X/Source/IAR/MK800X.icf 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/devices/MK800X/Source/startup_MK800X.c 271 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/devices/MK800X/Source/system_MK800X.c 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/Usart.c 285 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/Usart.h 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/Usart1.c 282 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/Usart1.h 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/aes.c 520 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/aes.h 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/global_param.c 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/global_param.h 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/menu.c 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/menu.h 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_acmp.c 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_acmp.h 174 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_adc.c 497 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_adc.h 292 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_aes.c 787 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_aes.h 375 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_calib.c 262 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_calib.h 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_clock.c 256 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_clock.h 223 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_common.h 208 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_dma.c 234 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_dma.h 265 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_dual_timer.c 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_dual_timer.h 238 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_efuse.c 192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_efuse.h 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_flash.c 1326 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_flash.h 256 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_gpio.c 192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_gpio.h 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_i2c.c 1034 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_i2c.h 197 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_io.c 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_io.h 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_lsp.h 212 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_mac.h 316 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_misc.c 529 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_misc.h 359 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_phy.h 572 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_power.c 736 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_power.h 208 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_pwm.c 183 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_pwm.h 179 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_radar.c 1037 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_radar.h 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_reset.c 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_reset.h 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_rtc.c 492 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_rtc.h 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_sbl.c 339 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_sbl.h 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_sleep_timer.c 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_sleep_timer.h 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_spi.c 923 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_spi.h 318 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_timer.c 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_timer.h 183 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_trace.c 1855 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_trace.h 249 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_trng.c 199 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_trng.h 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_uart.c 941 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_uart.h 461 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_uwb.c 746 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_uwb.h 287 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_wdt.c 214 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/mk_wdt.h 170 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/serial_at_cmd_app.c 383 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/serial_at_cmd_app.h 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/ymodem.c 863 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/drivers/ymodem.h 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/main/main.c 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/src/uwb_examples/uwb_simple_example/simple_ds_twr_init/simple_ds_twr_init.c 370 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/src/uwb_examples/uwb_simple_example/simple_ds_twr_init/simple_ds_twr_init_yuan.c 369 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/src/uwb_examples/uwb_simple_example/simple_ds_twr_init_sts/simple_ds_twr_init_sts.c 385 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/src/uwb_examples/uwb_simple_example/simple_ds_twr_init_sts/simple_ds_twr_init_sts_yuan.c 385 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/src/uwb_examples/uwb_simple_example/simple_ds_twr_resp/simple_ds_twr_resp.c 408 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/src/uwb_examples/uwb_simple_example/simple_ds_twr_resp/simple_ds_twr_resp_yuan.c 408 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/src/uwb_examples/uwb_simple_example/simple_ds_twr_resp_sts/simple_ds_twr_resp_sts.c 464 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/src/uwb_examples/uwb_simple_example/simple_ds_twr_resp_sts/simple_ds_twr_resp_sts_yuan.c 464 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/src/uwb_examples/uwb_simple_example/simple_rx/simple_rx - yuan.c 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/src/uwb_examples/uwb_simple_example/simple_rx/simple_rx.c 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/src/uwb_examples/uwb_simple_example/simple_tx/simple_tx.c 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/include/src/uwb_examples/uwb_simple_example/simple_tx/simple_tx_yuan.c 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/simple_ss_twr_dw_init.c 399 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/simple_ss_twr_dw_resp.c 389 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/uwb_simple_example.uvguix.xookk 3769 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/uwb_simple_example.uvmpw 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/uwb_simple_example.uvmpw.uvgui.xookk 1968 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/uwb_simple_example.uvoptx 1121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/uwb_simple_example.uvprojx 1254 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
keil/新建 文本文档.txt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pin_config.c 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user_config.h 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
gcc/Makefile
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,169 @@
PROJ_NAME = uwb_simple_example
# Build folder
ODIR      = ./objects
# Detect Unix-style shell
ifeq ($(findstring /,$(PWD)),/)
RM        = rm -f
FixPath   = $1
MKDIR     = mkdir -p
MV        = mv -f
$(info Unix-Style)
else
SHELL    := cmd.exe
RM        = del /Q
FixPath   = $(subst /,\,$1)
MKDIR     = mkdir
MV        = copy
$(info Windows)
endif
# Configure tool names
CC        = arm-none-eabi-gcc
CXX       = arm-none-eabi-g++
AS        = arm-none-eabi-as
OBJCOPY   = arm-none-eabi-objcopy -O binary -S
SIZE      = arm-none-eabi-size
# Define CPU target
#  - Use Cortex-M1 if tools do not provide named support for Cortex-M0
#  - Compiling for Cortex-M1 will produce code compatible with Cortex-M0
CPUTARGET = -mcpu=Cortex-M0 -mthumb -mthumb-interwork
#
# CM0MCU compiler options
#
CCFLAGS   = $(CPUTARGET) -std=c99 -O2 -g -DUWB_EN
CCFLAGS  += -ffunction-sections -fdata-sections
LDFLAGS   = $(CPUTARGET) -T ../../../../../devices/MK800X/Source/GCC/gcc_arm.ld
# Use newlib-nano
LDFLAGS  += --specs=nano.specs
LDFLAGS  += --specs=nosys.specs
# print float
#LDFLAGS  += -u_printf_float
# Link for code size
LDFLAGS  += -Wl,--gc-sections
# Create map file
LDFLAGS  += -Wl,-Map=$(PROJ_NAME).map
ASFLAGS   = $(CPUTARGET) --keep
# Source code
SRC       = ../../../board.c \
            ../pin_config.c \
            ../../../../src/uwb_examples/uwb_simple_example/main.c \
            ../../../../src/uwb_examples/uwb_simple_example/simple_ds_twr_init/simple_ds_twr_init.c \
            ../../../../src/uwb_examples/uwb_simple_example/simple_ds_twr_init_sts/simple_ds_twr_init_sts.c \
            ../../../../src/uwb_examples/uwb_simple_example/simple_ds_twr_resp/simple_ds_twr_resp.c \
            ../../../../src/uwb_examples/uwb_simple_example/simple_ds_twr_resp_sts/simple_ds_twr_resp_sts.c \
            ../../../../src/uwb_examples/uwb_simple_example/simple_rx/simple_rx.c \
            ../../../../src/uwb_examples/uwb_simple_example/simple_tx/simple_tx.c \
            ../../../../../components/algo/src/steering_vector/cmp_svec.c \
            ../../../../../components/crc/crc.c \
            ../../../../../components/libc/libc.c \
            ../../../../../components/wsf/sources/platform/pal_flash.c \
            ../../../../../components/wsf/sources/platform/pal_sys.c \
            ../../../../../components/wsf/sources/platform/pal_uart.c \
            ../../../../../components/wsf/sources/port/baremetal/wsf_assert.c \
            ../../../../../components/wsf/sources/port/baremetal/wsf_buf.c \
            ../../../../../components/wsf/sources/port/baremetal/wsf_bufio.c \
            ../../../../../components/wsf/sources/port/baremetal/wsf_heap.c \
            ../../../../../components/wsf/sources/port/baremetal/wsf_msg.c \
            ../../../../../components/wsf/sources/port/baremetal/wsf_nvm.c \
            ../../../../../components/wsf/sources/port/baremetal/wsf_os.c \
            ../../../../../components/wsf/sources/port/baremetal/wsf_queue.c \
            ../../../../../components/wsf/sources/port/baremetal/wsf_timer.c \
            ../../../../../components/wsf/sources/port/baremetal/wsf_trace.c \
            ../../../../../devices/MK800X/Source/startup_MK800X.c \
            ../../../../../devices/MK800X/Source/system_MK800X.c \
            ../../../../../drivers/mk_adc.c \
            ../../../../../drivers/mk_aes.c \
            ../../../../../drivers/mk_calib.c \
            ../../../../../drivers/mk_clock.c \
            ../../../../../drivers/mk_dma.c \
            ../../../../../drivers/mk_dual_timer.c \
            ../../../../../drivers/mk_flash.c \
            ../../../../../drivers/mk_gpio.c \
            ../../../../../drivers/mk_io.c \
            ../../../../../drivers/mk_misc.c \
            ../../../../../drivers/mk_power.c \
            ../../../../../drivers/mk_reset.c \
            ../../../../../drivers/mk_rtc.c \
            ../../../../../drivers/mk_sleep_timer.c \
            ../../../../../drivers/mk_trace.c \
            ../../../../../drivers/mk_uart.c \
            ../../../../../drivers/mk_uwb.c \
            ../../../../../drivers/mk_wdt.c \
# Include path
INC       = -I../../../../../CMSIS/Include \
            -I../../.. \
            -I.. \
            -I../../../../../components/algo/inc \
            -I../../../../../components/crc \
            -I../../../../../components/libc \
            -I../../../../../components/wsf/include \
            -I../../../../../components/wsf/include/platform \
            -I../../../../../devices/MK800X/Include \
            -I../../../../../drivers \
# Include library
LIB       = ../../../../../components/algo/lib/lib_aoa.a \
            ../../../../../components/algo/lib/lib_ranging.a \
            ../../../../../drivers/lib/lib_lsp.a \
            ../../../../../drivers/lib/lib_mac_phy.a \
            -lm \
ODIR_     = $(call FixPath, $(ODIR))
OBJS      = $(patsubst %.c, $(ODIR)/%.o, $(notdir $(SRC)))
OBJS_     = $(call FixPath, $(OBJS))
ifneq ($(ODIR), $(wildcard $(ODIR)))
$(shell $(MKDIR) $(ODIR_))
endif
$(info $(ODIR))
$(info $(OBJS))
SOURSE_DIR = $(dir $(SRC))
vpath %.c $(SOURSE_DIR)
.PHONY: all clean
################################################################################
#
# Rule deck
#
all: $(PROJ_NAME).bin $(PROJ_NAME).elf $(OBJS)
$(ODIR)/%.o: %.c
        $(info $< $@)
        $(CC) -c $(CCFLAGS) $(INC) $< -o $@
%.elf: $(OBJS)
        $(CC) $(LDFLAGS) $^ -Xlinker "-(" $(LIB) -Xlinker "-)" -o $(PROJ_NAME).elf
        $(SIZE) $@
%.bin: %.elf
        $(OBJCOPY) $(PROJ_NAME).elf $(PROJ_NAME).bin
################################################################################
#
# Clean - remove all .bin, .elf, .map
#
clean:
        $(RM) $(OBJS_) *.bin *.elf *.map
download:
        -./pyjlink -f $(PROJ_NAME).bin
# EOF
iar/settings/uwb_simple_example_MK8000 Release.jlink
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
[FLASH]
Override = 1
Device="Cortex-M0"
iar/uwb_simple_example.ewd
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1530 @@
<?xml version="1.0" encoding="UTF-8"?>
<project>
  <fileVersion>3</fileVersion>
  <configuration>
    <name>MK8000 Release</name>
    <toolchain>
      <name>ARM</name>
    </toolchain>
    <debug>1</debug>
    <settings>
      <name>C-SPY</name>
      <archiveVersion>2</archiveVersion>
      <data>
        <version>32</version>
        <wantNonLocal>1</wantNonLocal>
        <debug>1</debug>
        <option>
          <name>CInput</name>
          <state>1</state>
        </option>
        <option>
          <name>CEndian</name>
          <state>1</state>
        </option>
        <option>
          <name>CProcessor</name>
          <state>1</state>
        </option>
        <option>
          <name>OCVariant</name>
          <state>0</state>
        </option>
        <option>
          <name>MacOverride</name>
          <state>1</state>
        </option>
        <option>
          <name>MacFile</name>
          <state>$TOOLKIT_DIR$\config\flashloader\MKSEMI\FlashMK8000.mac</state>
        </option>
        <option>
          <name>MemOverride</name>
          <state>0</state>
        </option>
        <option>
          <name>MemFile</name>
          <state>$TOOLKIT_DIR$\CONFIG\debugger\MKSEMI\mk8000.ddf</state>
        </option>
        <option>
          <name>RunToEnable</name>
          <state>1</state>
        </option>
        <option>
          <name>RunToName</name>
          <state>main</state>
        </option>
        <option>
          <name>CExtraOptionsCheck</name>
          <state>0</state>
        </option>
        <option>
          <name>CExtraOptions</name>
          <state></state>
        </option>
        <option>
          <name>CFpuProcessor</name>
          <state>1</state>
        </option>
        <option>
          <name>OCDDFArgumentProducer</name>
          <state></state>
        </option>
        <option>
          <name>OCDownloadSuppressDownload</name>
          <state>0</state>
        </option>
        <option>
          <name>OCDownloadVerifyAll</name>
          <state>0</state>
        </option>
        <option>
          <name>OCProductVersion</name>
          <state>9.10.2.39304</state>
        </option>
        <option>
          <name>OCDynDriverList</name>
          <state>JLINK_ID</state>
        </option>
        <option>
          <name>OCLastSavedByProductVersion</name>
          <state>9.10.2.39304</state>
        </option>
        <option>
          <name>UseFlashLoader</name>
          <state>1</state>
        </option>
        <option>
          <name>CLowLevel</name>
          <state>1</state>
        </option>
        <option>
          <name>OCBE8Slave</name>
          <state>1</state>
        </option>
        <option>
          <name>MacFile2</name>
          <state></state>
        </option>
        <option>
          <name>CDevice</name>
          <state>1</state>
        </option>
        <option>
          <name>FlashLoadersV3</name>
          <state>$TOOLKIT_DIR$\config\flashloader\MKSEMI\FlashMK8000.board</state>
        </option>
        <option>
          <name>OCImagesSuppressCheck1</name>
          <state>0</state>
        </option>
        <option>
          <name>OCImagesPath1</name>
          <state></state>
        </option>
        <option>
          <name>OCImagesSuppressCheck2</name>
          <state>0</state>
        </option>
        <option>
          <name>OCImagesPath2</name>
          <state></state>
        </option>
        <option>
          <name>OCImagesSuppressCheck3</name>
          <state>0</state>
        </option>
        <option>
          <name>OCImagesPath3</name>
          <state></state>
        </option>
        <option>
          <name>OverrideDefFlashBoard</name>
          <state>1</state>
        </option>
        <option>
          <name>OCImagesOffset1</name>
          <state></state>
        </option>
        <option>
          <name>OCImagesOffset2</name>
          <state></state>
        </option>
        <option>
          <name>OCImagesOffset3</name>
          <state></state>
        </option>
        <option>
          <name>OCImagesUse1</name>
          <state>0</state>
        </option>
        <option>
          <name>OCImagesUse2</name>
          <state>0</state>
        </option>
        <option>
          <name>OCImagesUse3</name>
          <state>0</state>
        </option>
        <option>
          <name>OCDeviceConfigMacroFile</name>
          <state>1</state>
        </option>
        <option>
          <name>OCDebuggerExtraOption</name>
          <state>1</state>
        </option>
        <option>
          <name>OCAllMTBOptions</name>
          <state>1</state>
        </option>
        <option>
          <name>OCMulticoreNrOfCores</name>
          <state>1</state>
        </option>
        <option>
          <name>OCMulticoreWorkspace</name>
          <state></state>
        </option>
        <option>
          <name>OCMulticoreSlaveProject</name>
          <state></state>
        </option>
        <option>
          <name>OCMulticoreSlaveConfiguration</name>
          <state></state>
        </option>
        <option>
          <name>OCDownloadExtraImage</name>
          <state>1</state>
        </option>
        <option>
          <name>OCAttachSlave</name>
          <state>0</state>
        </option>
        <option>
          <name>MassEraseBeforeFlashing</name>
          <state>0</state>
        </option>
        <option>
          <name>OCMulticoreNrOfCoresSlave</name>
          <state>1</state>
        </option>
        <option>
          <name>OCMulticoreAMPConfigType</name>
          <state>0</state>
        </option>
        <option>
          <name>OCMulticoreSessionFile</name>
          <state></state>
        </option>
        <option>
          <name>OCTpiuBaseOption</name>
          <state>1</state>
        </option>
      </data>
    </settings>
    <settings>
      <name>ARMSIM_ID</name>
      <archiveVersion>2</archiveVersion>
      <data>
        <version>1</version>
        <wantNonLocal>1</wantNonLocal>
        <debug>1</debug>
        <option>
          <name>OCSimDriverInfo</name>
          <state>1</state>
        </option>
        <option>
          <name>OCSimEnablePSP</name>
          <state>0</state>
        </option>
        <option>
          <name>OCSimPspOverrideConfig</name>
          <state>0</state>
        </option>
        <option>
          <name>OCSimPspConfigFile</name>
          <state></state>
        </option>
      </data>
    </settings>
    <settings>
      <name>CADI_ID</name>
      <archiveVersion>2</archiveVersion>
      <data>
        <version>0</version>
        <wantNonLocal>1</wantNonLocal>
        <debug>1</debug>
        <option>
          <name>CCadiMemory</name>
          <state>1</state>
        </option>
        <option>
          <name>Fast Model</name>
          <state></state>
        </option>
        <option>
          <name>CCADILogFileCheck</name>
          <state>0</state>
        </option>
        <option>
          <name>CCADILogFileEditB</name>
          <state>$PROJ_DIR$\cspycomm.log</state>
        </option>
        <option>
          <name>OCDriverInfo</name>
          <state>1</state>
        </option>
      </data>
    </settings>
    <settings>
      <name>CMSISDAP_ID</name>
      <archiveVersion>2</archiveVersion>
      <data>
        <version>4</version>
        <wantNonLocal>1</wantNonLocal>
        <debug>1</debug>
        <option>
          <name>OCDriverInfo</name>
          <state>1</state>
        </option>
        <option>
          <name>OCIarProbeScriptFile</name>
          <state>1</state>
        </option>
        <option>
          <name>CMSISDAPResetList</name>
          <version>1</version>
          <state>10</state>
        </option>
        <option>
          <name>CMSISDAPHWResetDuration</name>
          <state>300</state>
        </option>
        <option>
          <name>CMSISDAPHWResetDelay</name>
          <state>200</state>
        </option>
        <option>
          <name>CMSISDAPDoLogfile</name>
          <state>0</state>
        </option>
        <option>
          <name>CMSISDAPLogFile</name>
          <state>$PROJ_DIR$\cspycomm.log</state>
        </option>
        <option>
          <name>CMSISDAPInterfaceRadio</name>
          <state>1</state>
        </option>
        <option>
          <name>CMSISDAPInterfaceCmdLine</name>
          <state>0</state>
        </option>
        <option>
          <name>CMSISDAPMultiTargetEnable</name>
          <state>0</state>
        </option>
        <option>
          <name>CMSISDAPMultiTarget</name>
          <state>0</state>
        </option>
        <option>
          <name>CMSISDAPJtagSpeedList</name>
          <version>0</version>
          <state>0</state>
        </option>
        <option>
          <name>CMSISDAPBreakpointRadio</name>
          <state>0</state>
        </option>
        <option>
          <name>CMSISDAPRestoreBreakpointsCheck</name>
          <state>0</state>
        </option>
        <option>
          <name>CMSISDAPUpdateBreakpointsEdit</name>
          <state>_call_main</state>
        </option>
        <option>
          <name>RDICatchReset</name>
          <state>0</state>
        </option>
        <option>
          <name>RDICatchUndef</name>
          <state>1</state>
        </option>
        <option>
          <name>RDICatchSWI</name>
          <state>0</state>
        </option>
        <option>
          <name>RDICatchData</name>
          <state>1</state>
        </option>
        <option>
          <name>RDICatchPrefetch</name>
          <state>1</state>
        </option>
        <option>
          <name>RDICatchIRQ</name>
          <state>0</state>
        </option>
        <option>
          <name>RDICatchFIQ</name>
          <state>0</state>
        </option>
        <option>
          <name>CatchCORERESET</name>
          <state>0</state>
        </option>
        <option>
          <name>CatchMMERR</name>
          <state>1</state>
        </option>
        <option>
          <name>CatchNOCPERR</name>
          <state>1</state>
        </option>
        <option>
          <name>CatchCHKERR</name>
          <state>1</state>
        </option>
        <option>
          <name>CatchSTATERR</name>
          <state>1</state>
        </option>
        <option>
          <name>CatchBUSERR</name>
          <state>1</state>
        </option>
        <option>
          <name>CatchINTERR</name>
          <state>1</state>
        </option>
        <option>
          <name>CatchSFERR</name>
          <state>1</state>
        </option>
        <option>
          <name>CatchHARDERR</name>
          <state>1</state>
        </option>
        <option>
          <name>CatchDummy</name>
          <state>0</state>
        </option>
        <option>
          <name>CMSISDAPMultiCPUEnable</name>
          <state>0</state>
        </option>
        <option>
          <name>CMSISDAPMultiCPUNumber</name>
          <state>0</state>
        </option>
        <option>
          <name>OCProbeCfgOverride</name>
          <state>0</state>
        </option>
        <option>
          <name>OCProbeConfig</name>
          <state></state>
        </option>
        <option>
          <name>CMSISDAPProbeConfigRadio</name>
          <state>0</state>
        </option>
        <option>
          <name>CMSISDAPSelectedCPUBehaviour</name>
          <state>0</state>
        </option>
        <option>
          <name>ICpuName</name>
          <state></state>
        </option>
        <option>
          <name>OCJetEmuParams</name>
          <state>1</state>
        </option>
        <option>
          <name>CCCMSISDAPUsbSerialNo</name>
          <state></state>
        </option>
        <option>
          <name>CCCMSISDAPUsbSerialNoSelect</name>
          <state>0</state>
        </option>
      </data>
    </settings>
    <settings>
      <name>GDBSERVER_ID</name>
      <archiveVersion>2</archiveVersion>
      <data>
        <version>0</version>
        <wantNonLocal>1</wantNonLocal>
        <debug>1</debug>
        <option>
          <name>OCDriverInfo</name>
          <state>1</state>
        </option>
        <option>
          <name>TCPIP</name>
          <state>aaa.bbb.ccc.ddd</state>
        </option>
        <option>
          <name>DoLogfile</name>
          <state>0</state>
        </option>
        <option>
          <name>LogFile</name>
          <state>$PROJ_DIR$\cspycomm.log</state>
        </option>
        <option>
          <name>CCJTagBreakpointRadio</name>
          <state>0</state>
        </option>
        <option>
          <name>CCJTagDoUpdateBreakpoints</name>
          <state>0</state>
        </option>
        <option>
          <name>CCJTagUpdateBreakpoints</name>
          <state>_call_main</state>
        </option>
      </data>
    </settings>
    <settings>
      <name>IJET_ID</name>
      <archiveVersion>2</archiveVersion>
      <data>
        <version>9</version>
        <wantNonLocal>1</wantNonLocal>
        <debug>1</debug>
        <option>
          <name>OCDriverInfo</name>
          <state>1</state>
        </option>
        <option>
          <name>OCIarProbeScriptFile</name>
          <state>1</state>
        </option>
        <option>
          <name>IjetResetList</name>
          <version>1</version>
          <state>10</state>
        </option>
        <option>
          <name>IjetHWResetDuration</name>
          <state>300</state>
        </option>
        <option>
          <name>IjetHWResetDelay</name>
          <state>200</state>
        </option>
        <option>
          <name>IjetPowerFromProbe</name>
          <state>1</state>
        </option>
        <option>
          <name>IjetPowerRadio</name>
          <state>0</state>
        </option>
        <option>
          <name>IjetDoLogfile</name>
          <state>0</state>
        </option>
        <option>
          <name>IjetLogFile</name>
          <state>$PROJ_DIR$\cspycomm.log</state>
        </option>
        <option>
          <name>IjetInterfaceRadio</name>
          <state>1</state>
        </option>
        <option>
          <name>IjetInterfaceCmdLine</name>
          <state>0</state>
        </option>
        <option>
          <name>IjetMultiTargetEnable</name>
          <state>0</state>
        </option>
        <option>
          <name>IjetMultiTarget</name>
          <state>0</state>
        </option>
        <option>
          <name>IjetScanChainNonARMDevices</name>
          <state>0</state>
        </option>
        <option>
          <name>IjetIRLength</name>
          <state>0</state>
        </option>
        <option>
          <name>IjetJtagSpeedList</name>
          <version>0</version>
          <state>0</state>
        </option>
        <option>
          <name>IjetProtocolRadio</name>
          <state>0</state>
        </option>
        <option>
          <name>IjetSwoPin</name>
          <state>0</state>
        </option>
        <option>
          <name>IjetCpuClockEdit</name>
          <state></state>
        </option>
        <option>
          <name>IjetSwoPrescalerList</name>
          <version>1</version>
          <state>0</state>
        </option>
        <option>
          <name>IjetBreakpointRadio</name>
          <state>0</state>
        </option>
        <option>
          <name>IjetRestoreBreakpointsCheck</name>
          <state>0</state>
        </option>
        <option>
          <name>IjetUpdateBreakpointsEdit</name>
          <state>_call_main</state>
        </option>
        <option>
          <name>RDICatchReset</name>
          <state>0</state>
        </option>
        <option>
          <name>RDICatchUndef</name>
          <state>1</state>
        </option>
        <option>
          <name>RDICatchSWI</name>
          <state>0</state>
        </option>
        <option>
          <name>RDICatchData</name>
          <state>1</state>
        </option>
        <option>
          <name>RDICatchPrefetch</name>
          <state>1</state>
        </option>
        <option>
          <name>RDICatchIRQ</name>
          <state>0</state>
        </option>
        <option>
          <name>RDICatchFIQ</name>
          <state>0</state>
        </option>
        <option>
          <name>CatchCORERESET</name>
          <state>0</state>
        </option>
        <option>
          <name>CatchMMERR</name>
          <state>1</state>
        </option>
        <option>
          <name>CatchNOCPERR</name>
          <state>1</state>
        </option>
        <option>
          <name>CatchCHKERR</name>
          <state>1</state>
        </option>
        <option>
          <name>CatchSTATERR</name>
          <state>1</state>
        </option>
        <option>
          <name>CatchBUSERR</name>
          <state>1</state>
        </option>
        <option>
          <name>CatchINTERR</name>
          <state>1</state>
        </option>
        <option>
          <name>CatchSFERR</name>
          <state>1</state>
        </option>
        <option>
          <name>CatchHARDERR</name>
          <state>1</state>
        </option>
        <option>
          <name>CatchDummy</name>
          <state>0</state>
        </option>
        <option>
          <name>OCProbeCfgOverride</name>
          <state>0</state>
        </option>
        <option>
          <name>OCProbeConfig</name>
          <state></state>
        </option>
        <option>
          <name>IjetProbeConfigRadio</name>
          <state>0</state>
        </option>
        <option>
          <name>IjetMultiCPUEnable</name>
          <state>0</state>
        </option>
        <option>
          <name>IjetMultiCPUNumber</name>
          <state>0</state>
        </option>
        <option>
          <name>IjetSelectedCPUBehaviour</name>
          <state>0</state>
        </option>
        <option>
          <name>ICpuName</name>
          <state></state>
        </option>
        <option>
          <name>OCJetEmuParams</name>
          <state>1</state>
        </option>
        <option>
          <name>IjetPreferETB</name>
          <state>1</state>
        </option>
        <option>
          <name>IjetTraceSettingsList</name>
          <version>0</version>
          <state>0</state>
        </option>
        <option>
          <name>IjetTraceSizeList</name>
          <version>0</version>
          <state>4</state>
        </option>
        <option>
          <name>FlashBoardPathSlave</name>
          <state>0</state>
        </option>
        <option>
          <name>CCIjetUsbSerialNo</name>
          <state></state>
        </option>
        <option>
          <name>CCIjetUsbSerialNoSelect</name>
          <state>0</state>
        </option>
        <option>
          <name>CatchV8ARReset</name>
          <state>0</state>
        </option>
        <option>
          <name>CatchV8AREREL1NS</name>
          <state>0</state>
        </option>
        <option>
          <name>CatchV8AREREL1S</name>
          <state>0</state>
        </option>
        <option>
          <name>CatchV8AREREL2NS</name>
          <state>0</state>
        </option>
        <option>
          <name>CatchV8AREREL3S</name>
          <state>0</state>
        </option>
        <option>
          <name>CatchV8AREEL1NS</name>
          <state>0</state>
        </option>
        <option>
          <name>CatchV8ARREL1NS</name>
          <state>0</state>
        </option>
        <option>
          <name>CatchV8AREEL1S</name>
          <state>0</state>
        </option>
        <option>
          <name>CatchV8ARREL1S</name>
          <state>0</state>
        </option>
        <option>
          <name>CatchV8AREEL2NS</name>
          <state>0</state>
        </option>
        <option>
          <name>CatchV8ARREL2NS</name>
          <state>0</state>
        </option>
        <option>
          <name>CatchV8AREEL3S</name>
          <state>0</state>
        </option>
        <option>
          <name>CatchV8ARREL3S</name>
          <state>0</state>
        </option>
      </data>
    </settings>
    <settings>
      <name>JLINK_ID</name>
      <archiveVersion>2</archiveVersion>
      <data>
        <version>16</version>
        <wantNonLocal>1</wantNonLocal>
        <debug>1</debug>
        <option>
          <name>JLinkSpeed</name>
          <state>1000</state>
        </option>
        <option>
          <name>CCJLinkDoLogfile</name>
          <state>0</state>
        </option>
        <option>
          <name>CCJLinkLogFile</name>
          <state>$PROJ_DIR$\cspycomm.log</state>
        </option>
        <option>
          <name>CCJLinkHWResetDelay</name>
          <state>0</state>
        </option>
        <option>
          <name>OCDriverInfo</name>
          <state>1</state>
        </option>
        <option>
          <name>JLinkInitialSpeed</name>
          <state>1000</state>
        </option>
        <option>
          <name>CCDoJlinkMultiTarget</name>
          <state>0</state>
        </option>
        <option>
          <name>CCScanChainNonARMDevices</name>
          <state>0</state>
        </option>
        <option>
          <name>CCJLinkMultiTarget</name>
          <state>0</state>
        </option>
        <option>
          <name>CCJLinkIRLength</name>
          <state>0</state>
        </option>
        <option>
          <name>CCJLinkCommRadio</name>
          <state>0</state>
        </option>
        <option>
          <name>CCJLinkTCPIP</name>
          <state>aaa.bbb.ccc.ddd</state>
        </option>
        <option>
          <name>CCJLinkSpeedRadioV2</name>
          <state>0</state>
        </option>
        <option>
          <name>CCUSBDevice</name>
          <version>1</version>
          <state>1</state>
        </option>
        <option>
          <name>CCRDICatchReset</name>
          <state>0</state>
        </option>
        <option>
          <name>CCRDICatchUndef</name>
          <state>0</state>
        </option>
        <option>
          <name>CCRDICatchSWI</name>
          <state>0</state>
        </option>
        <option>
          <name>CCRDICatchData</name>
          <state>0</state>
        </option>
        <option>
          <name>CCRDICatchPrefetch</name>
          <state>0</state>
        </option>
        <option>
          <name>CCRDICatchIRQ</name>
          <state>0</state>
        </option>
        <option>
          <name>CCRDICatchFIQ</name>
          <state>0</state>
        </option>
        <option>
          <name>CCJLinkBreakpointRadio</name>
          <state>0</state>
        </option>
        <option>
          <name>CCJLinkDoUpdateBreakpoints</name>
          <state>0</state>
        </option>
        <option>
          <name>CCJLinkUpdateBreakpoints</name>
          <state>_call_main</state>
        </option>
        <option>
          <name>CCJLinkInterfaceRadio</name>
          <state>1</state>
        </option>
        <option>
          <name>CCJLinkResetList</name>
          <version>6</version>
          <state>7</state>
        </option>
        <option>
          <name>CCJLinkInterfaceCmdLine</name>
          <state>0</state>
        </option>
        <option>
          <name>CCCatchCORERESET</name>
          <state>0</state>
        </option>
        <option>
          <name>CCCatchMMERR</name>
          <state>0</state>
        </option>
        <option>
          <name>CCCatchNOCPERR</name>
          <state>0</state>
        </option>
        <option>
          <name>CCCatchCHRERR</name>
          <state>0</state>
        </option>
        <option>
          <name>CCCatchSTATERR</name>
          <state>0</state>
        </option>
        <option>
          <name>CCCatchBUSERR</name>
          <state>0</state>
        </option>
        <option>
          <name>CCCatchINTERR</name>
          <state>0</state>
        </option>
        <option>
          <name>CCCatchSFERR</name>
          <state>0</state>
        </option>
        <option>
          <name>CCCatchHARDERR</name>
          <state>0</state>
        </option>
        <option>
          <name>CCCatchDummy</name>
          <state>0</state>
        </option>
        <option>
          <name>OCJLinkScriptFile</name>
          <state>1</state>
        </option>
        <option>
          <name>CCJLinkUsbSerialNo</name>
          <state></state>
        </option>
        <option>
          <name>CCTcpIpAlt</name>
          <version>0</version>
          <state>0</state>
        </option>
        <option>
          <name>CCJLinkTcpIpSerialNo</name>
          <state></state>
        </option>
        <option>
          <name>CCCpuClockEdit</name>
          <state></state>
        </option>
        <option>
          <name>CCSwoClockAuto</name>
          <state>0</state>
        </option>
        <option>
          <name>CCSwoClockEdit</name>
          <state>2000</state>
        </option>
        <option>
          <name>OCJLinkTraceSource</name>
          <state>0</state>
        </option>
        <option>
          <name>OCJLinkTraceSourceDummy</name>
          <state>0</state>
        </option>
        <option>
          <name>OCJLinkDeviceName</name>
          <state>1</state>
        </option>
      </data>
    </settings>
    <settings>
      <name>LMIFTDI_ID</name>
      <archiveVersion>2</archiveVersion>
      <data>
        <version>3</version>
        <wantNonLocal>1</wantNonLocal>
        <debug>1</debug>
        <option>
          <name>OCDriverInfo</name>
          <state>1</state>
        </option>
        <option>
          <name>LmiftdiSpeed</name>
          <state>500</state>
        </option>
        <option>
          <name>CCLmiftdiDoLogfile</name>
          <state>0</state>
        </option>
        <option>
          <name>CCLmiftdiLogFile</name>
          <state>$PROJ_DIR$\cspycomm.log</state>
        </option>
        <option>
          <name>CCLmiFtdiInterfaceRadio</name>
          <state>1</state>
        </option>
        <option>
          <name>CCLmiFtdiInterfaceCmdLine</name>
          <state>0</state>
        </option>
        <option>
          <name>CCLmiftdiUsbSerialNo</name>
          <state></state>
        </option>
        <option>
          <name>CCLmiftdiUsbSerialNoSelect</name>
          <state>0</state>
        </option>
        <option>
          <name>CCLmiftdiResetList</name>
          <version>0</version>
          <state>0</state>
        </option>
      </data>
    </settings>
    <settings>
      <name>NULINK_ID</name>
      <archiveVersion>2</archiveVersion>
      <data>
        <version>0</version>
        <wantNonLocal>1</wantNonLocal>
        <debug>1</debug>
        <option>
          <name>OCDriverInfo</name>
          <state>1</state>
        </option>
        <option>
          <name>DoLogfile</name>
          <state>0</state>
        </option>
        <option>
          <name>LogFile</name>
          <state>$PROJ_DIR$\cspycomm.log</state>
        </option>
      </data>
    </settings>
    <settings>
      <name>PEMICRO_ID</name>
      <archiveVersion>2</archiveVersion>
      <data>
        <version>3</version>
        <wantNonLocal>1</wantNonLocal>
        <debug>1</debug>
        <option>
          <name>OCDriverInfo</name>
          <state>1</state>
        </option>
        <option>
          <name>CCJPEMicroShowSettings</name>
          <state>0</state>
        </option>
        <option>
          <name>DoLogfile</name>
          <state>0</state>
        </option>
        <option>
          <name>LogFile</name>
          <state>$PROJ_DIR$\cspycomm.log</state>
        </option>
      </data>
    </settings>
    <settings>
      <name>STLINK_ID</name>
      <archiveVersion>2</archiveVersion>
      <data>
        <version>7</version>
        <wantNonLocal>1</wantNonLocal>
        <debug>1</debug>
        <option>
          <name>OCDriverInfo</name>
          <state>1</state>
        </option>
        <option>
          <name>CCSTLinkInterfaceRadio</name>
          <state>1</state>
        </option>
        <option>
          <name>CCSTLinkInterfaceCmdLine</name>
          <state>0</state>
        </option>
        <option>
          <name>CCSTLinkResetList</name>
          <version>3</version>
          <state>0</state>
        </option>
        <option>
          <name>CCCpuClockEdit</name>
          <state></state>
        </option>
        <option>
          <name>CCSwoClockAuto</name>
          <state>1</state>
        </option>
        <option>
          <name>CCSwoClockEdit</name>
          <state>2000</state>
        </option>
        <option>
          <name>DoLogfile</name>
          <state>0</state>
        </option>
        <option>
          <name>LogFile</name>
          <state>$PROJ_DIR$\cspycomm.log</state>
        </option>
        <option>
          <name>CCSTLinkDoUpdateBreakpoints</name>
          <state>0</state>
        </option>
        <option>
          <name>CCSTLinkUpdateBreakpoints</name>
          <state>_call_main</state>
        </option>
        <option>
          <name>CCSTLinkCatchCORERESET</name>
          <state>0</state>
        </option>
        <option>
          <name>CCSTLinkCatchMMERR</name>
          <state>0</state>
        </option>
        <option>
          <name>CCSTLinkCatchNOCPERR</name>
          <state>0</state>
        </option>
        <option>
          <name>CCSTLinkCatchCHRERR</name>
          <state>0</state>
        </option>
        <option>
          <name>CCSTLinkCatchSTATERR</name>
          <state>0</state>
        </option>
        <option>
          <name>CCSTLinkCatchBUSERR</name>
          <state>0</state>
        </option>
        <option>
          <name>CCSTLinkCatchINTERR</name>
          <state>0</state>
        </option>
        <option>
          <name>CCSTLinkCatchSFERR</name>
          <state>0</state>
        </option>
        <option>
          <name>CCSTLinkCatchHARDERR</name>
          <state>0</state>
        </option>
        <option>
          <name>CCSTLinkCatchDummy</name>
          <state>0</state>
        </option>
        <option>
          <name>CCSTLinkUsbSerialNo</name>
          <state></state>
        </option>
        <option>
          <name>CCSTLinkUsbSerialNoSelect</name>
          <state>0</state>
        </option>
        <option>
          <name>CCSTLinkJtagSpeedList</name>
          <version>2</version>
          <state>0</state>
        </option>
        <option>
          <name>CCSTLinkDAPNumber</name>
          <state></state>
        </option>
        <option>
          <name>CCSTLinkDebugAccessPortRadio</name>
          <state>0</state>
        </option>
        <option>
          <name>CCSTLinkUseServerSelect</name>
          <state>0</state>
        </option>
        <option>
          <name>CCSTLinkProbeList</name>
          <version>1</version>
          <state>0</state>
        </option>
      </data>
    </settings>
    <settings>
      <name>THIRDPARTY_ID</name>
      <archiveVersion>2</archiveVersion>
      <data>
        <version>0</version>
        <wantNonLocal>1</wantNonLocal>
        <debug>1</debug>
        <option>
          <name>CThirdPartyDriverDll</name>
          <state>###Uninitialized###</state>
        </option>
        <option>
          <name>CThirdPartyLogFileCheck</name>
          <state>0</state>
        </option>
        <option>
          <name>CThirdPartyLogFileEditB</name>
          <state>$PROJ_DIR$\cspycomm.log</state>
        </option>
        <option>
          <name>OCDriverInfo</name>
          <state>1</state>
        </option>
      </data>
    </settings>
    <settings>
      <name>TIFET_ID</name>
      <archiveVersion>2</archiveVersion>
      <data>
        <version>1</version>
        <wantNonLocal>1</wantNonLocal>
        <debug>1</debug>
        <option>
          <name>OCDriverInfo</name>
          <state>1</state>
        </option>
        <option>
          <name>CCMSPFetResetList</name>
          <version>0</version>
          <state>0</state>
        </option>
        <option>
          <name>CCMSPFetInterfaceRadio</name>
          <state>0</state>
        </option>
        <option>
          <name>CCMSPFetInterfaceCmdLine</name>
          <state>0</state>
        </option>
        <option>
          <name>CCMSPFetTargetVccTypeDefault</name>
          <state>0</state>
        </option>
        <option>
          <name>CCMSPFetTargetVoltage</name>
          <state>###Uninitialized###</state>
        </option>
        <option>
          <name>CCMSPFetVCCDefault</name>
          <state>1</state>
        </option>
        <option>
          <name>CCMSPFetTargetSettlingtime</name>
          <state>0</state>
        </option>
        <option>
          <name>CCMSPFetRadioJtagSpeedType</name>
          <state>1</state>
        </option>
        <option>
          <name>CCMSPFetConnection</name>
          <version>0</version>
          <state>0</state>
        </option>
        <option>
          <name>CCMSPFetUsbComPort</name>
          <state>Automatic</state>
        </option>
        <option>
          <name>CCMSPFetAllowAccessToBSL</name>
          <state>0</state>
        </option>
        <option>
          <name>CCMSPFetDoLogfile</name>
          <state>0</state>
        </option>
        <option>
          <name>CCMSPFetLogFile</name>
          <state>$PROJ_DIR$\cspycomm.log</state>
        </option>
        <option>
          <name>CCMSPFetRadioEraseFlash</name>
          <state>1</state>
        </option>
      </data>
    </settings>
    <settings>
      <name>XDS100_ID</name>
      <archiveVersion>2</archiveVersion>
      <data>
        <version>8</version>
        <wantNonLocal>1</wantNonLocal>
        <debug>1</debug>
        <option>
          <name>OCDriverInfo</name>
          <state>1</state>
        </option>
        <option>
          <name>TIPackageOverride</name>
          <state>0</state>
        </option>
        <option>
          <name>TIPackage</name>
          <state></state>
        </option>
        <option>
          <name>BoardFile</name>
          <state></state>
        </option>
        <option>
          <name>DoLogfile</name>
          <state>0</state>
        </option>
        <option>
          <name>LogFile</name>
          <state>$PROJ_DIR$\cspycomm.log</state>
        </option>
        <option>
          <name>CCXds100BreakpointRadio</name>
          <state>0</state>
        </option>
        <option>
          <name>CCXds100DoUpdateBreakpoints</name>
          <state>0</state>
        </option>
        <option>
          <name>CCXds100UpdateBreakpoints</name>
          <state>_call_main</state>
        </option>
        <option>
          <name>CCXds100CatchReset</name>
          <state>0</state>
        </option>
        <option>
          <name>CCXds100CatchUndef</name>
          <state>0</state>
        </option>
        <option>
          <name>CCXds100CatchSWI</name>
          <state>0</state>
        </option>
        <option>
          <name>CCXds100CatchData</name>
          <state>0</state>
        </option>
        <option>
          <name>CCXds100CatchPrefetch</name>
          <state>0</state>
        </option>
        <option>
          <name>CCXds100CatchIRQ</name>
          <state>0</state>
        </option>
        <option>
          <name>CCXds100CatchFIQ</name>
          <state>0</state>
        </option>
        <option>
          <name>CCXds100CatchCORERESET</name>
          <state>0</state>
        </option>
        <option>
          <name>CCXds100CatchMMERR</name>
          <state>0</state>
        </option>
        <option>
          <name>CCXds100CatchNOCPERR</name>
          <state>0</state>
        </option>
        <option>
          <name>CCXds100CatchCHRERR</name>
          <state>0</state>
        </option>
        <option>
          <name>CCXds100CatchSTATERR</name>
          <state>0</state>
        </option>
        <option>
          <name>CCXds100CatchBUSERR</name>
          <state>0</state>
        </option>
        <option>
          <name>CCXds100CatchINTERR</name>
          <state>0</state>
        </option>
        <option>
          <name>CCXds100CatchSFERR</name>
          <state>0</state>
        </option>
        <option>
          <name>CCXds100CatchHARDERR</name>
          <state>0</state>
        </option>
        <option>
          <name>CCXds100CatchDummy</name>
          <state>0</state>
        </option>
        <option>
          <name>CCXds100CpuClockEdit</name>
          <state></state>
        </option>
        <option>
          <name>CCXds100SwoClockAuto</name>
          <state>0</state>
        </option>
        <option>
          <name>CCXds100SwoClockEdit</name>
          <state>1000</state>
        </option>
        <option>
          <name>CCXds100HWResetDelay</name>
          <state>0</state>
        </option>
        <option>
          <name>CCXds100ResetList</name>
          <version>0</version>
          <state>0</state>
        </option>
        <option>
          <name>CCXds100UsbSerialNo</name>
          <state></state>
        </option>
        <option>
          <name>CCXds100UsbSerialNoSelect</name>
          <state>0</state>
        </option>
        <option>
          <name>CCXds100JtagSpeedList</name>
          <version>0</version>
          <state>0</state>
        </option>
        <option>
          <name>CCXds100InterfaceRadio</name>
          <state>2</state>
        </option>
        <option>
          <name>CCXds100InterfaceCmdLine</name>
          <state>0</state>
        </option>
        <option>
          <name>CCXds100ProbeList</name>
          <version>0</version>
          <state>3</state>
        </option>
        <option>
          <name>CCXds100SWOPortRadio</name>
          <state>0</state>
        </option>
        <option>
          <name>CCXds100SWOPort</name>
          <state>1</state>
        </option>
        <option>
          <name>CCXDSTargetVccEnable</name>
          <state>0</state>
        </option>
        <option>
          <name>CCXDSTargetVoltage</name>
          <state>###Uninitialized###</state>
        </option>
        <option>
          <name>OCXDSDigitalStatesConfigFile</name>
          <state>1</state>
        </option>
      </data>
    </settings>
    <debuggerPlugins>
      <plugin>
        <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin</file>
        <loadFlag>0</loadFlag>
      </plugin>
      <plugin>
        <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin</file>
        <loadFlag>0</loadFlag>
      </plugin>
      <plugin>
        <file>$TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin</file>
        <loadFlag>0</loadFlag>
      </plugin>
      <plugin>
        <file>$TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin</file>
        <loadFlag>0</loadFlag>
      </plugin>
      <plugin>
        <file>$TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin</file>
        <loadFlag>0</loadFlag>
      </plugin>
      <plugin>
        <file>$TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin</file>
        <loadFlag>0</loadFlag>
      </plugin>
      <plugin>
        <file>$TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin</file>
        <loadFlag>0</loadFlag>
      </plugin>
      <plugin>
        <file>$TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin</file>
        <loadFlag>0</loadFlag>
      </plugin>
      <plugin>
        <file>$TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9.ewplugin</file>
        <loadFlag>0</loadFlag>
      </plugin>
      <plugin>
        <file>$TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9BE.ewplugin</file>
        <loadFlag>0</loadFlag>
      </plugin>
      <plugin>
        <file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin</file>
        <loadFlag>0</loadFlag>
      </plugin>
      <plugin>
        <file>$EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin</file>
        <loadFlag>0</loadFlag>
      </plugin>
      <plugin>
        <file>$EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin</file>
        <loadFlag>0</loadFlag>
      </plugin>
      <plugin>
        <file>$EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin</file>
        <loadFlag>0</loadFlag>
      </plugin>
    </debuggerPlugins>
  </configuration>
</project>
iar/uwb_simple_example.ewp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1226 @@
<?xml version="1.0" encoding="UTF-8"?>
<project>
  <fileVersion>3</fileVersion>
  <configuration>
    <name>MK8000 Release</name>
    <toolchain>
      <name>ARM</name>
    </toolchain>
    <debug>1</debug>
    <settings>
      <name>General</name>
      <archiveVersion>3</archiveVersion>
      <data>
        <version>33</version>
        <wantNonLocal>1</wantNonLocal>
        <debug>1</debug>
        <option>
          <name>BrowseInfoPath</name>
          <state>MK8000 Release\BrowseInfo</state>
        </option>
        <option>
          <name>ExePath</name>
          <state>MK8000 Release\Exe</state>
        </option>
        <option>
          <name>ObjPath</name>
          <state>MK8000 Release\Obj</state>
        </option>
        <option>
          <name>ListPath</name>
          <state>MK8000 Release\List</state>
        </option>
        <option>
          <name>GEndianMode</name>
          <state>0</state>
        </option>
        <option>
          <name>Input description</name>
          <state>No specifier n, no float nor long long, no scan set, no assignment suppressing, without multibyte support.</state>
        </option>
        <option>
          <name>Output description</name>
          <state>Automatic choice of formatter, without multibyte support.</state>
        </option>
        <option>
          <name>GOutputBinary</name>
          <state>0</state>
        </option>
        <option>
          <name>OGCoreOrChip</name>
          <state>1</state>
        </option>
        <option>
          <name>GRuntimeLibSelect</name>
          <version>0</version>
          <state>1</state>
        </option>
        <option>
          <name>GRuntimeLibSelectSlave</name>
          <version>0</version>
          <state>1</state>
        </option>
        <option>
          <name>RTDescription</name>
          <state>Use the normal configuration of the C/C++ runtime library. No locale interface, C locale, no file descriptor support, no multibytes in printf and scanf, and no hex floats in strtod.</state>
        </option>
        <option>
          <name>OGProductVersion</name>
          <state>7.60.1.11206</state>
        </option>
        <option>
          <name>OGLastSavedByProductVersion</name>
          <state>9.10.2.39304</state>
        </option>
        <option>
          <name>OGChipSelectEditMenu</name>
          <state>MK8000    MKSEMI MK8000</state>
        </option>
        <option>
          <name>GenLowLevelInterface</name>
          <state>1</state>
        </option>
        <option>
          <name>GEndianModeBE</name>
          <state>1</state>
        </option>
        <option>
          <name>OGBufferedTerminalOutput</name>
          <state>0</state>
        </option>
        <option>
          <name>GenStdoutInterface</name>
          <state>0</state>
        </option>
        <option>
          <name>RTConfigPath2</name>
          <state>$TOOLKIT_DIR$\inc\c\DLib_Config_Normal.h</state>
        </option>
        <option>
          <name>GBECoreSlave</name>
          <version>30</version>
          <state>34</state>
        </option>
        <option>
          <name>OGUseCmsis</name>
          <state>0</state>
        </option>
        <option>
          <name>OGUseCmsisDspLib</name>
          <state>0</state>
        </option>
        <option>
          <name>GRuntimeLibThreads</name>
          <state>0</state>
        </option>
        <option>
          <name>CoreVariant</name>
          <version>30</version>
          <state>34</state>
        </option>
        <option>
          <name>GFPUDeviceSlave</name>
          <state>MK8000    MKSEMI MK8000</state>
        </option>
        <option>
          <name>FPU2</name>
          <version>0</version>
          <state>0</state>
        </option>
        <option>
          <name>NrRegs</name>
          <version>0</version>
          <state>0</state>
        </option>
        <option>
          <name>NEON</name>
          <state>0</state>
        </option>
        <option>
          <name>GFPUCoreSlave2</name>
          <version>30</version>
          <state>34</state>
        </option>
        <option>
          <name>OGCMSISPackSelectDevice</name>
        </option>
        <option>
          <name>OgLibHeap</name>
          <state>0</state>
        </option>
        <option>
          <name>OGLibAdditionalLocale</name>
          <state>0</state>
        </option>
        <option>
          <name>OGPrintfVariant</name>
          <version>0</version>
          <state>0</state>
        </option>
        <option>
          <name>OGPrintfMultibyteSupport</name>
          <state>0</state>
        </option>
        <option>
          <name>OGScanfVariant</name>
          <version>0</version>
          <state>3</state>
        </option>
        <option>
          <name>OGScanfMultibyteSupport</name>
          <state>0</state>
        </option>
        <option>
          <name>GenLocaleTags</name>
          <state></state>
        </option>
        <option>
          <name>GenLocaleDisplayOnly</name>
          <state></state>
        </option>
        <option>
          <name>DSPExtension</name>
          <state>0</state>
        </option>
        <option>
          <name>TrustZone</name>
          <state>0</state>
        </option>
        <option>
          <name>TrustZoneModes</name>
          <version>0</version>
          <state>0</state>
        </option>
        <option>
          <name>OGAarch64Abi</name>
          <state>0</state>
        </option>
        <option>
          <name>OG_32_64Device</name>
          <state>0</state>
        </option>
      </data>
    </settings>
    <settings>
      <name>ICCARM</name>
      <archiveVersion>2</archiveVersion>
      <data>
        <version>37</version>
        <wantNonLocal>1</wantNonLocal>
        <debug>1</debug>
        <option>
          <name>CCDefines</name>
          <state>UWB_EN</state>
        </option>
        <option>
          <name>CCPreprocFile</name>
          <state>0</state>
        </option>
        <option>
          <name>CCPreprocComments</name>
          <state>0</state>
        </option>
        <option>
          <name>CCPreprocLine</name>
          <state>1</state>
        </option>
        <option>
          <name>CCListCFile</name>
          <state>0</state>
        </option>
        <option>
          <name>CCListCMnemonics</name>
          <state>0</state>
        </option>
        <option>
          <name>CCListCMessages</name>
          <state>0</state>
        </option>
        <option>
          <name>CCListAssFile</name>
          <state>0</state>
        </option>
        <option>
          <name>CCListAssSource</name>
          <state>0</state>
        </option>
        <option>
          <name>CCEnableRemarks</name>
          <state>0</state>
        </option>
        <option>
          <name>CCDiagSuppress</name>
          <state>Pa082, Pe188</state>
        </option>
        <option>
          <name>CCDiagRemark</name>
          <state></state>
        </option>
        <option>
          <name>CCDiagWarning</name>
          <state></state>
        </option>
        <option>
          <name>CCDiagError</name>
          <state></state>
        </option>
        <option>
          <name>CCObjPrefix</name>
          <state>1</state>
        </option>
        <option>
          <name>CCAllowList</name>
          <version>1</version>
          <state>00000000</state>
        </option>
        <option>
          <name>CCDebugInfo</name>
          <state>1</state>
        </option>
        <option>
          <name>IEndianMode</name>
          <state>1</state>
        </option>
        <option>
          <name>IProcessor</name>
          <state>1</state>
        </option>
        <option>
          <name>IExtraOptionsCheck</name>
          <state>0</state>
        </option>
        <option>
          <name>IExtraOptions</name>
          <state></state>
        </option>
        <option>
          <name>CCLangConformance</name>
          <state>0</state>
        </option>
        <option>
          <name>CCSignedPlainChar</name>
          <state>1</state>
        </option>
        <option>
          <name>CCRequirePrototypes</name>
          <state>0</state>
        </option>
        <option>
          <name>CCDiagWarnAreErr</name>
          <state>0</state>
        </option>
        <option>
          <name>CCCompilerRuntimeInfo</name>
          <state>0</state>
        </option>
        <option>
          <name>IFpuProcessor</name>
          <state>1</state>
        </option>
        <option>
          <name>OutputFile</name>
          <state>$FILE_BNAME$.o</state>
        </option>
        <option>
          <name>CCLibConfigHeader</name>
          <state>1</state>
        </option>
        <option>
          <name>PreInclude</name>
          <state></state>
        </option>
        <option>
          <name>CCIncludePath2</name>
          <state>$PROJ_DIR$/..</state>
          <state>$PROJ_DIR$/../../..</state>
          <state>$PROJ_DIR$/../../../../../CMSIS/Include</state>
          <state>$PROJ_DIR$/../../../../../components/algo/inc</state>
          <state>$PROJ_DIR$/../../../../../components/crc</state>
          <state>$PROJ_DIR$/../../../../../components/libc</state>
          <state>$PROJ_DIR$/../../../../../components/wsf/include</state>
          <state>$PROJ_DIR$/../../../../../components/wsf/include/platform</state>
          <state>$PROJ_DIR$/../../../../../devices/MK800X/Include</state>
          <state>$PROJ_DIR$/../../../../../drivers</state>
        </option>
        <option>
          <name>CCStdIncCheck</name>
          <state>0</state>
        </option>
        <option>
          <name>CCCodeSection</name>
          <state>.text</state>
        </option>
        <option>
          <name>IProcessorMode2</name>
          <state>1</state>
        </option>
        <option>
          <name>CCOptLevel</name>
          <state>2</state>
        </option>
        <option>
          <name>CCOptStrategy</name>
          <version>0</version>
          <state>0</state>
        </option>
        <option>
          <name>CCOptLevelSlave</name>
          <state>2</state>
        </option>
        <option>
          <name>CCPosIndRopi</name>
          <state>0</state>
        </option>
        <option>
          <name>CCPosIndRwpi</name>
          <state>0</state>
        </option>
        <option>
          <name>CCPosIndNoDynInit</name>
          <state>0</state>
        </option>
        <option>
          <name>IccLang</name>
          <state>0</state>
        </option>
        <option>
          <name>IccCDialect</name>
          <state>1</state>
        </option>
        <option>
          <name>IccAllowVLA</name>
          <state>0</state>
        </option>
        <option>
          <name>IccStaticDestr</name>
          <state>1</state>
        </option>
        <option>
          <name>IccCppInlineSemantics</name>
          <state>0</state>
        </option>
        <option>
          <name>IccCmsis</name>
          <state>1</state>
        </option>
        <option>
          <name>IccFloatSemantics</name>
          <state>0</state>
        </option>
        <option>
          <name>CCOptimizationNoSizeConstraints</name>
          <state>0</state>
        </option>
        <option>
          <name>CCNoLiteralPool</name>
          <state>0</state>
        </option>
        <option>
          <name>CCOptStrategySlave</name>
          <version>0</version>
          <state>0</state>
        </option>
        <option>
          <name>CCGuardCalls</name>
          <state>1</state>
        </option>
        <option>
          <name>CCEncSource</name>
          <state>0</state>
        </option>
        <option>
          <name>CCEncOutput</name>
          <state>0</state>
        </option>
        <option>
          <name>CCEncOutputBom</name>
          <state>1</state>
        </option>
        <option>
          <name>CCEncInput</name>
          <state>0</state>
        </option>
        <option>
          <name>IccExceptions2</name>
          <state>0</state>
        </option>
        <option>
          <name>IccRTTI2</name>
          <state>0</state>
        </option>
        <option>
          <name>OICompilerExtraOption</name>
          <state>1</state>
        </option>
        <option>
          <name>CCStackProtection</name>
          <state>0</state>
        </option>
      </data>
    </settings>
    <settings>
      <name>AARM</name>
      <archiveVersion>2</archiveVersion>
      <data>
        <version>11</version>
        <wantNonLocal>1</wantNonLocal>
        <debug>1</debug>
        <option>
          <name>AObjPrefix</name>
          <state>1</state>
        </option>
        <option>
          <name>AEndian</name>
          <state>1</state>
        </option>
        <option>
          <name>ACaseSensitivity</name>
          <state>1</state>
        </option>
        <option>
          <name>MacroChars</name>
          <version>0</version>
          <state>0</state>
        </option>
        <option>
          <name>AWarnEnable</name>
          <state>0</state>
        </option>
        <option>
          <name>AWarnWhat</name>
          <state>0</state>
        </option>
        <option>
          <name>AWarnOne</name>
          <state></state>
        </option>
        <option>
          <name>AWarnRange1</name>
          <state></state>
        </option>
        <option>
          <name>AWarnRange2</name>
          <state></state>
        </option>
        <option>
          <name>ADebug</name>
          <state>1</state>
        </option>
        <option>
          <name>AltRegisterNames</name>
          <state>0</state>
        </option>
        <option>
          <name>ADefines</name>
          <state></state>
        </option>
        <option>
          <name>AList</name>
          <state>0</state>
        </option>
        <option>
          <name>AListHeader</name>
          <state>1</state>
        </option>
        <option>
          <name>AListing</name>
          <state>1</state>
        </option>
        <option>
          <name>Includes</name>
          <state>0</state>
        </option>
        <option>
          <name>MacDefs</name>
          <state>0</state>
        </option>
        <option>
          <name>MacExps</name>
          <state>1</state>
        </option>
        <option>
          <name>MacExec</name>
          <state>0</state>
        </option>
        <option>
          <name>OnlyAssed</name>
          <state>0</state>
        </option>
        <option>
          <name>MultiLine</name>
          <state>0</state>
        </option>
        <option>
          <name>PageLengthCheck</name>
          <state>0</state>
        </option>
        <option>
          <name>PageLength</name>
          <state>80</state>
        </option>
        <option>
          <name>TabSpacing</name>
          <state>8</state>
        </option>
        <option>
          <name>AXRef</name>
          <state>0</state>
        </option>
        <option>
          <name>AXRefDefines</name>
          <state>0</state>
        </option>
        <option>
          <name>AXRefInternal</name>
          <state>0</state>
        </option>
        <option>
          <name>AXRefDual</name>
          <state>0</state>
        </option>
        <option>
          <name>AProcessor</name>
          <state>1</state>
        </option>
        <option>
          <name>AFpuProcessor</name>
          <state>1</state>
        </option>
        <option>
          <name>AOutputFile</name>
          <state>$FILE_BNAME$.o</state>
        </option>
        <option>
          <name>ALimitErrorsCheck</name>
          <state>0</state>
        </option>
        <option>
          <name>ALimitErrorsEdit</name>
          <state>100</state>
        </option>
        <option>
          <name>AIgnoreStdInclude</name>
          <state>0</state>
        </option>
        <option>
          <name>AUserIncludes</name>
          <state></state>
        </option>
        <option>
          <name>AExtraOptionsCheckV2</name>
          <state>0</state>
        </option>
        <option>
          <name>AExtraOptionsV2</name>
          <state></state>
        </option>
        <option>
          <name>AsmNoLiteralPool</name>
          <state>0</state>
        </option>
        <option>
          <name>PreInclude</name>
          <state></state>
        </option>
      </data>
    </settings>
    <settings>
      <name>OBJCOPY</name>
      <archiveVersion>0</archiveVersion>
      <data>
        <version>1</version>
        <wantNonLocal>1</wantNonLocal>
        <debug>1</debug>
        <option>
          <name>OOCOutputFormat</name>
          <version>3</version>
          <state>3</state>
        </option>
        <option>
          <name>OCOutputOverride</name>
          <state>0</state>
        </option>
        <option>
          <name>OOCOutputFile</name>
          <state>uwb_simple_example.bin</state>
        </option>
        <option>
          <name>OOCCommandLineProducer</name>
          <state>1</state>
        </option>
        <option>
          <name>OOCObjCopyEnable</name>
          <state>1</state>
        </option>
      </data>
    </settings>
    <settings>
      <name>CUSTOM</name>
      <archiveVersion>3</archiveVersion>
      <data>
        <extensions></extensions>
        <cmdline></cmdline>
        <hasPrio>80</hasPrio>
        <buildSequence>inputOutputBased</buildSequence>
      </data>
    </settings>
    <settings>
      <name>BUILDACTION</name>
      <archiveVersion>1</archiveVersion>
      <data>
        <prebuild></prebuild>
        <postbuild></postbuild>
      </data>
    </settings>
    <settings>
      <name>ILINK</name>
      <archiveVersion>0</archiveVersion>
      <data>
        <version>25</version>
        <wantNonLocal>1</wantNonLocal>
        <debug>1</debug>
        <option>
          <name>IlinkLibIOConfig</name>
          <state>1</state>
        </option>
        <option>
          <name>IlinkInputFileSlave</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkOutputFile</name>
          <state>uwb_simple_example.out</state>
        </option>
        <option>
          <name>IlinkDebugInfoEnable</name>
          <state>1</state>
        </option>
        <option>
          <name>IlinkKeepSymbols</name>
          <state></state>
        </option>
        <option>
          <name>IlinkRawBinaryFile</name>
          <state></state>
        </option>
        <option>
          <name>IlinkRawBinarySymbol</name>
          <state></state>
        </option>
        <option>
          <name>IlinkRawBinarySegment</name>
          <state></state>
        </option>
        <option>
          <name>IlinkRawBinaryAlign</name>
          <state></state>
        </option>
        <option>
          <name>IlinkDefines</name>
          <state></state>
        </option>
        <option>
          <name>IlinkConfigDefines</name>
          <state></state>
        </option>
        <option>
          <name>IlinkMapFile</name>
          <state>1</state>
        </option>
        <option>
          <name>IlinkLogFile</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkLogInitialization</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkLogModule</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkLogSection</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkLogVeneer</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkIcfOverride</name>
          <state>1</state>
        </option>
        <option>
          <name>IlinkIcfFile</name>
          <state>$PROJ_DIR$/../../../../../devices/MK800X/Source/IAR/MK800X.icf</state>
        </option>
        <option>
          <name>IlinkIcfFileSlave</name>
          <state></state>
        </option>
        <option>
          <name>IlinkEnableRemarks</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkSuppressDiags</name>
          <state></state>
        </option>
        <option>
          <name>IlinkTreatAsRem</name>
          <state></state>
        </option>
        <option>
          <name>IlinkTreatAsWarn</name>
          <state></state>
        </option>
        <option>
          <name>IlinkTreatAsErr</name>
          <state></state>
        </option>
        <option>
          <name>IlinkWarningsAreErrors</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkUseExtraOptions</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkExtraOptions</name>
          <state></state>
        </option>
        <option>
          <name>IlinkLowLevelInterfaceSlave</name>
          <state>1</state>
        </option>
        <option>
          <name>IlinkAutoLibEnable</name>
          <state>1</state>
        </option>
        <option>
          <name>IlinkAdditionalLibs</name>
          <state></state>
        </option>
        <option>
          <name>IlinkOverrideProgramEntryLabel</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkProgramEntryLabelSelect</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkProgramEntryLabel</name>
          <state>__iar_program_start</state>
        </option>
        <option>
          <name>DoFill</name>
          <state>0</state>
        </option>
        <option>
          <name>FillerByte</name>
          <state>0xFF</state>
        </option>
        <option>
          <name>FillerStart</name>
          <state>0x0</state>
        </option>
        <option>
          <name>FillerEnd</name>
          <state>0x0</state>
        </option>
        <option>
          <name>CrcSize</name>
          <version>0</version>
          <state>1</state>
        </option>
        <option>
          <name>CrcAlign</name>
          <state>1</state>
        </option>
        <option>
          <name>CrcPoly</name>
          <state>0x11021</state>
        </option>
        <option>
          <name>CrcCompl</name>
          <version>0</version>
          <state>0</state>
        </option>
        <option>
          <name>CrcBitOrder</name>
          <version>0</version>
          <state>0</state>
        </option>
        <option>
          <name>CrcInitialValue</name>
          <state>0x0</state>
        </option>
        <option>
          <name>DoCrc</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkBE8Slave</name>
          <state>1</state>
        </option>
        <option>
          <name>IlinkBufferedTerminalOutput</name>
          <state>1</state>
        </option>
        <option>
          <name>IlinkStdoutInterfaceSlave</name>
          <state>1</state>
        </option>
        <option>
          <name>CrcFullSize</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkIElfToolPostProcess</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkLogAutoLibSelect</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkLogRedirSymbols</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkLogUnusedFragments</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkCrcReverseByteOrder</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkCrcUseAsInput</name>
          <state>1</state>
        </option>
        <option>
          <name>IlinkOptInline</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkOptExceptionsAllow</name>
          <state>1</state>
        </option>
        <option>
          <name>IlinkOptExceptionsForce</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkCmsis</name>
          <state>1</state>
        </option>
        <option>
          <name>IlinkOptMergeDuplSections</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkOptUseVfe</name>
          <state>1</state>
        </option>
        <option>
          <name>IlinkOptForceVfe</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkStackAnalysisEnable</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkStackControlFile</name>
          <state></state>
        </option>
        <option>
          <name>IlinkStackCallGraphFile</name>
          <state></state>
        </option>
        <option>
          <name>CrcAlgorithm</name>
          <version>1</version>
          <state>1</state>
        </option>
        <option>
          <name>CrcUnitSize</name>
          <version>0</version>
          <state>0</state>
        </option>
        <option>
          <name>IlinkThreadsSlave</name>
          <state>1</state>
        </option>
        <option>
          <name>IlinkLogCallGraph</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkIcfFile_AltDefault</name>
          <state></state>
        </option>
        <option>
          <name>IlinkEncInput</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkEncOutput</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkEncOutputBom</name>
          <state>1</state>
        </option>
        <option>
          <name>IlinkHeapSelect</name>
          <state>1</state>
        </option>
        <option>
          <name>IlinkLocaleSelect</name>
          <state>1</state>
        </option>
        <option>
          <name>IlinkTrustzoneImportLibraryOut</name>
          <state>uwb_simple_example_import_lib.o</state>
        </option>
        <option>
          <name>OILinkExtraOption</name>
          <state>1</state>
        </option>
        <option>
          <name>IlinkRawBinaryFile2</name>
          <state></state>
        </option>
        <option>
          <name>IlinkRawBinarySymbol2</name>
          <state></state>
        </option>
        <option>
          <name>IlinkRawBinarySegment2</name>
          <state></state>
        </option>
        <option>
          <name>IlinkRawBinaryAlign2</name>
          <state></state>
        </option>
        <option>
          <name>IlinkLogCrtRoutineSelection</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkLogFragmentInfo</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkLogInlining</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkLogMerging</name>
          <state>0</state>
        </option>
        <option>
          <name>IlinkDemangle</name>
          <state>0</state>
        </option>
      </data>
    </settings>
    <settings>
      <name>IARCHIVE</name>
      <archiveVersion>0</archiveVersion>
      <data>
        <version>0</version>
        <wantNonLocal>1</wantNonLocal>
        <debug>1</debug>
        <option>
          <name>IarchiveInputs</name>
          <state></state>
        </option>
        <option>
          <name>IarchiveOverride</name>
          <state>0</state>
        </option>
        <option>
          <name>IarchiveOutput</name>
          <state>###Unitialized###</state>
        </option>
      </data>
    </settings>
  </configuration>
  <group>
    <name>Algo</name>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\components\algo\src\steering_vector\cmp_svec.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\components\algo\lib\lib_aoa_iar.a</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\components\algo\lib\lib_ranging_iar.a</name>
    </file>
  </group>
  <group>
    <name>Device</name>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\devices\MK800X\Source\startup_MK800X.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\devices\MK800X\Source\system_MK800X.c</name>
    </file>
  </group>
  <group>
    <name>Driver</name>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\drivers\lib\lib_lsp_iar.a</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\drivers\lib\lib_mac_phy_iar.a</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_adc.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_aes.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_calib.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_clock.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_dma.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_dual_timer.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_flash.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_gpio.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_io.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_misc.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_power.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_reset.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_rtc.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_sleep_timer.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_trace.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_uart.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_uwb.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\drivers\mk_wdt.c</name>
    </file>
  </group>
  <group>
    <name>Main</name>
    <file>
      <name>$PROJ_DIR$\..\..\..\board.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\src\uwb_examples\uwb_simple_example\main.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\pin_config.c</name>
    </file>
  </group>
  <group>
    <name>OS</name>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\components\wsf\sources\port\baremetal\wsf_assert.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\components\wsf\sources\port\baremetal\wsf_buf.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\components\wsf\sources\port\baremetal\wsf_bufio.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\components\wsf\sources\port\baremetal\wsf_heap.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\components\wsf\sources\port\baremetal\wsf_msg.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\components\wsf\sources\port\baremetal\wsf_nvm.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\components\wsf\sources\port\baremetal\wsf_os.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\components\wsf\sources\port\baremetal\wsf_queue.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\components\wsf\sources\port\baremetal\wsf_timer.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\components\wsf\sources\port\baremetal\wsf_trace.c</name>
    </file>
  </group>
  <group>
    <name>Platform</name>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\components\wsf\sources\platform\pal_flash.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\components\wsf\sources\platform\pal_sys.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\components\wsf\sources\platform\pal_uart.c</name>
    </file>
  </group>
  <group>
    <name>Simple</name>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\src\uwb_examples\uwb_simple_example\simple_ds_twr_init\simple_ds_twr_init.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\src\uwb_examples\uwb_simple_example\simple_ds_twr_init_sts\simple_ds_twr_init_sts.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\src\uwb_examples\uwb_simple_example\simple_ds_twr_resp\simple_ds_twr_resp.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\src\uwb_examples\uwb_simple_example\simple_ds_twr_resp_sts\simple_ds_twr_resp_sts.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\src\uwb_examples\uwb_simple_example\simple_rx\simple_rx.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\src\uwb_examples\uwb_simple_example\simple_tx\simple_tx.c</name>
    </file>
  </group>
  <group>
    <name>Utility</name>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\components\crc\crc.c</name>
    </file>
    <file>
      <name>$PROJ_DIR$\..\..\..\..\..\components\libc\libc.c</name>
    </file>
  </group>
</project>
iar/uwb_simple_example.eww
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<workspace>
  <project>
    <path>$WS_DIR$\uwb_simple_example.ewp</path>
  </project>
  <batchBuild></batchBuild>
</workspace>
keil/EventRecorderStub.scvd
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<component_viewer schemaVersion="0.1" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="Component_Viewer.xsd">
<component name="EventRecorderStub" version="1.0.0"/>       <!--name and version of the component-->
  <events>
  </events>
</component_viewer>
keil/JLinkLog.txt
¶Ô±ÈÐÂÎļþ
ÎļþÌ«´ó
keil/JLinkSettings.ini
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
[BREAKPOINTS]
ForceImpTypeAny = 0
ShowInfoWin = 1
EnableFlashBP = 2
BPDuringExecution = 0
[CFI]
CFISize = 0x00
CFIAddr = 0x00
[CPU]
MonModeVTableAddr = 0xFFFFFFFF
MonModeDebug = 0
MaxNumAPs = 0
LowPowerHandlingMode = 0
OverrideMemMap = 0
AllowSimulation = 1
ScriptFile=""
[FLASH]
CacheExcludeSize = 0x00
CacheExcludeAddr = 0x00
MinNumBytesFlashDL = 0
SkipProgOnCRCMatch = 1
VerifyDownload = 1
AllowCaching = 1
EnableFlashDL = 2
Override = 0
Device="MK8000"
[GENERAL]
WorkRAMSize = 0x00
WorkRAMAddr = 0x00
RAMUsageLimit = 0x00
[SWO]
SWOLogFile=""
[MEM]
RdOverrideOrMask = 0x00
RdOverrideAndMask = 0xFFFFFFFF
RdOverrideAddr = 0xFFFFFFFF
WrOverrideOrMask = 0x00
WrOverrideAndMask = 0xFFFFFFFF
WrOverrideAddr = 0xFFFFFFFF
keil/Listings/uwb_simple_example.map
¶Ô±ÈÐÂÎļþ
ÎļþÌ«´ó
keil/Objects/ExtDll.iex
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,2 @@
[EXTDLL]
Count=0
keil/Objects/board.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
./objects/board.o: include\board\board.c include\board\board.h \
  include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_trace.h include\drivers\mk_common.h \
  include\drivers\mk_uart.h include\drivers\mk_dma.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\drivers\mk_gpio.h include\drivers\mk_io.h \
  include\drivers\mk_power.h include\drivers\mk_clock.h \
  include\drivers\mk_calib.h include\drivers\mk_misc.h \
  include\drivers\mk_uwb.h include\drivers\mk_mac.h \
  include\drivers\mk_phy.h
keil/Objects/cmp_svec.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
./objects/cmp_svec.o: \
  include\components\algo\src\steering_vector\cmp_svec.c \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  include\components\algo\inc\lib_aoa.h include\drivers\mk_uwb.h \
  include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_mac.h include\drivers\mk_phy.h
keil/Objects/crc.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,4 @@
./objects/crc.o: include\components\crc\crc.c \
  include\components\crc\crc.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdlib.h
keil/Objects/dw_app.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
./objects/dw_app.o: dw_app.c dw_app.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h
keil/Objects/dw_app_anchor.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
./objects/dw_app_anchor.o: dw_app_anchor.c dw_app_anchor.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h
keil/Objects/global_param.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
./objects/global_param.o: include\drivers\global_param.c \
  include\drivers\global_param.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  include\drivers\mk_flash.h include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_dma.h include\drivers\mk_misc.h
keil/Objects/libc.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
./objects/libc.o: include\components\libc\libc.c \
  include\components\libc\libc_rom.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdio.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdlib.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\math.h
keil/Objects/main.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
./objects/main.o: include\main\main.c include\drivers\mk_trace.h \
  include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_uart.h include\drivers\mk_dma.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\drivers\mk_wdt.h include\drivers\mk_calib.h \
  include\drivers\mk_misc.h include\drivers\mk_flash.h \
  include\drivers\mk_misc.h include\components\libc\libc_rom.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdio.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdlib.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\math.h \
  include\drivers\serial_at_cmd_app.h include\drivers\global_param.h \
  include\board\board.h include\drivers\mk_common.h \
  include\drivers\mk_gpio.h include\drivers\mk_io.h \
  include\components\wsf\include\wsf_nvm.h \
  include\components\wsf\include\wsf_types.h include\drivers\mk_power.h \
  include\drivers\Usart.h
keil/Objects/mk_adc.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
./objects/mk_adc.o: include\drivers\mk_adc.c include\drivers\mk_adc.h \
  include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_dma.h include\drivers\mk_clock.h \
  include\drivers\mk_reset.h include\drivers\mk_trace.h \
  include\drivers\mk_uart.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\drivers\mk_misc.h
keil/Objects/mk_aes.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
./objects/mk_aes.o: include\drivers\mk_aes.c include\drivers\mk_aes.h \
  include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_dma.h include\drivers\mk_clock.h \
  include\drivers\mk_reset.h include\drivers\mk_trace.h \
  include\drivers\mk_uart.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h
keil/Objects/mk_calib.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
./objects/mk_calib.o: include\drivers\mk_calib.c \
  include\drivers\mk_calib.h include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_clock.h include\drivers\mk_reset.h \
  include\drivers\mk_trace.h include\drivers\mk_uart.h \
  include\drivers\mk_dma.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\drivers\mk_misc.h include\drivers\mk_rtc.h \
  include\board\board.h include\drivers\mk_common.h \
  include\drivers\mk_trace.h include\drivers\mk_gpio.h \
  include\drivers\mk_io.h
keil/Objects/mk_clock.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
./objects/mk_clock.o: include\drivers\mk_clock.c \
  include\drivers\mk_clock.h include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h
keil/Objects/mk_dma.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
./objects/mk_dma.o: include\drivers\mk_dma.c include\drivers\mk_dma.h \
  include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_clock.h include\drivers\mk_reset.h \
  include\drivers\mk_trace.h include\drivers\mk_uart.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h
keil/Objects/mk_dual_timer.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
./objects/mk_dual_timer.o: include\drivers\mk_dual_timer.c \
  include\drivers\mk_dual_timer.h include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_clock.h include\drivers\mk_reset.h \
  include\drivers\mk_trace.h include\drivers\mk_uart.h \
  include\drivers\mk_dma.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h
keil/Objects/mk_flash.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
./objects/mk_flash.o: include\drivers\mk_flash.c \
  include\drivers\mk_flash.h include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_dma.h include\drivers\mk_misc.h \
  include\drivers\mk_clock.h include\drivers\mk_reset.h \
  include\drivers\mk_trace.h include\drivers\mk_uart.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h
keil/Objects/mk_gpio.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
./objects/mk_gpio.o: include\drivers\mk_gpio.c include\drivers\mk_gpio.h \
  include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_io.h include\drivers\mk_clock.h \
  include\drivers\mk_reset.h include\drivers\mk_trace.h \
  include\drivers\mk_uart.h include\drivers\mk_dma.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h
keil/Objects/mk_io.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
./objects/mk_io.o: include\drivers\mk_io.c include\drivers\mk_io.h \
  include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h
keil/Objects/mk_misc.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
./objects/mk_misc.o: include\drivers\mk_misc.c include\drivers\mk_misc.h \
  include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_dual_timer.h include\drivers\mk_clock.h \
  include\drivers\mk_trace.h include\drivers\mk_uart.h \
  include\drivers\mk_dma.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\drivers\mk_sleep_timer.h include\drivers\mk_reset.h
keil/Objects/mk_power.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
./objects/mk_power.o: include\drivers\mk_power.c \
  include\drivers\mk_power.h include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_trace.h include\drivers\mk_uart.h \
  include\drivers\mk_dma.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\drivers\mk_clock.h include\drivers\mk_io.h \
  include\drivers\mk_flash.h include\drivers\mk_misc.h \
  include\drivers\mk_gpio.h include\drivers\mk_reset.h \
  include\drivers\mk_uwb.h include\drivers\mk_mac.h \
  include\drivers\mk_phy.h include\drivers\mk_sleep_timer.h
keil/Objects/mk_reset.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
./objects/mk_reset.o: include\drivers\mk_reset.c \
  include\drivers\mk_reset.h include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_trace.h include\drivers\mk_uart.h \
  include\drivers\mk_dma.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h
keil/Objects/mk_rtc.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
./objects/mk_rtc.o: include\drivers\mk_rtc.c include\drivers\mk_rtc.h \
  include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_clock.h include\drivers\mk_reset.h \
  include\drivers\mk_trace.h include\drivers\mk_uart.h \
  include\drivers\mk_dma.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\drivers\mk_sleep_timer.h
keil/Objects/mk_sleep_timer.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
./objects/mk_sleep_timer.o: include\drivers\mk_sleep_timer.c \
  include\drivers\mk_sleep_timer.h include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_trace.h include\drivers\mk_uart.h \
  include\drivers\mk_dma.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\drivers\mk_clock.h include\drivers\mk_power.h
keil/Objects/mk_trace.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
./objects/mk_trace.o: include\drivers\mk_trace.c \
  include\drivers\mk_trace.h include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_uart.h include\drivers\mk_dma.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\drivers\mk_reset.h include\drivers\mk_io.h \
  include\drivers\mk_misc.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdio.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdlib.h
keil/Objects/mk_uart.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
./objects/mk_uart.o: include\drivers\mk_uart.c include\drivers\mk_uart.h \
  include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_dma.h include\drivers\mk_trace.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\drivers\mk_clock.h include\drivers\mk_reset.h \
  include\drivers\mk_misc.h
keil/Objects/mk_uwb.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
./objects/mk_uwb.o: include\drivers\mk_uwb.c include\drivers\mk_uwb.h \
  include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_mac.h include\drivers\mk_phy.h \
  include\drivers\mk_reset.h include\drivers\mk_clock.h \
  include\drivers\mk_trace.h include\drivers\mk_uart.h \
  include\drivers\mk_dma.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\drivers\mk_misc.h include\drivers\mk_aes.h \
  include\drivers\mk_lsp.h include\drivers\mk_power.h \
  include\board\board.h include\drivers\mk_common.h \
  include\drivers\mk_trace.h include\drivers\mk_gpio.h \
  include\drivers\mk_io.h
keil/Objects/mk_wdt.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
./objects/mk_wdt.o: include\drivers\mk_wdt.c include\drivers\mk_wdt.h \
  include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_clock.h include\drivers\mk_reset.h \
  include\drivers\mk_trace.h include\drivers\mk_uart.h \
  include\drivers\mk_dma.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h
keil/Objects/pal_flash.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
./objects/pal_flash.o: \
  include\components\wsf\sources\platform\pal_flash.c \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\components\wsf\include\platform\pal_flash.h \
  include\components\wsf\include\platform\pal_types.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_flash.h include\drivers\mk_common.h \
  include\drivers\mk_dma.h include\drivers\mk_misc.h
keil/Objects/pal_sys.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
./objects/pal_sys.o: include\components\wsf\sources\platform\pal_sys.c \
  include\components\wsf\include\platform\pal_sys.h \
  include\components\wsf\include\platform\pal_types.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\components\wsf\include\platform\pal_uart.h \
  include\drivers\mk_misc.h include\drivers\mk_common.h
keil/Objects/pal_uart.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
./objects/pal_uart.o: include\components\wsf\sources\platform\pal_uart.c \
  include\components\wsf\include\platform\pal_uart.h \
  include\components\wsf\include\platform\pal_types.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h
keil/Objects/pin_config.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
./objects/pin_config.o: ..\pin_config.c include\drivers\mk_io.h \
  include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\board\board.h include\drivers\mk_common.h \
  include\drivers\mk_trace.h include\drivers\mk_uart.h \
  include\drivers\mk_dma.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\drivers\mk_gpio.h include\drivers\mk_io.h
keil/Objects/serial_at_cmd_app.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
./objects/serial_at_cmd_app.o: include\drivers\serial_at_cmd_app.c \
  include\drivers\serial_at_cmd_app.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  include\drivers\global_param.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdio.h include\drivers\Usart.h \
  include\board\board.h include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_trace.h include\drivers\mk_common.h \
  include\drivers\mk_uart.h include\drivers\mk_dma.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\drivers\mk_gpio.h include\drivers\mk_io.h
keil/Objects/simple_ds_twr_init.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
./objects/simple_ds_twr_init.o: \
  ..\..\..\..\src\uwb_examples\uwb_simple_example\simple_ds_twr_init\simple_ds_twr_init.c \
  include\drivers\mk_trace.h include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_uart.h include\drivers\mk_dma.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\drivers\mk_uwb.h include\drivers\mk_mac.h \
  include\drivers\mk_phy.h include\drivers\mk_misc.h \
  include\drivers\mk_power.h include\drivers\mk_sleep_timer.h \
  include\components\algo\inc\lib_ranging.h include\drivers\mk_mac.h \
  include\drivers\mk_phy.h include\board\board.h \
  include\drivers\mk_common.h include\drivers\mk_gpio.h \
  include\drivers\mk_io.h
keil/Objects/simple_ds_twr_init_sts.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
./objects/simple_ds_twr_init_sts.o: \
  ..\..\..\..\src\uwb_examples\uwb_simple_example\simple_ds_twr_init_sts\simple_ds_twr_init_sts.c \
  include\drivers\mk_trace.h include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_uart.h include\drivers\mk_dma.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\drivers\mk_uwb.h include\drivers\mk_mac.h \
  include\drivers\mk_phy.h include\drivers\mk_misc.h \
  include\drivers\mk_power.h include\drivers\mk_sleep_timer.h \
  include\components\algo\inc\lib_ranging.h include\drivers\mk_mac.h \
  include\drivers\mk_phy.h include\components\algo\inc\lib_aoa.h \
  include\board\board.h include\drivers\mk_common.h \
  include\drivers\mk_gpio.h include\drivers\mk_io.h
keil/Objects/simple_ds_twr_resp.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
./objects/simple_ds_twr_resp.o: \
  ..\..\..\..\src\uwb_examples\uwb_simple_example\simple_ds_twr_resp\simple_ds_twr_resp.c \
  include\drivers\mk_trace.h include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_uart.h include\drivers\mk_dma.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\drivers\mk_uwb.h include\drivers\mk_mac.h \
  include\drivers\mk_phy.h include\drivers\mk_misc.h \
  include\drivers\mk_power.h include\drivers\mk_sleep_timer.h \
  include\components\algo\inc\lib_ranging.h include\drivers\mk_mac.h \
  include\drivers\mk_phy.h include\board\board.h \
  include\drivers\mk_common.h include\drivers\mk_gpio.h \
  include\drivers\mk_io.h
keil/Objects/simple_ds_twr_resp_sts.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
./objects/simple_ds_twr_resp_sts.o: \
  ..\..\..\..\src\uwb_examples\uwb_simple_example\simple_ds_twr_resp_sts\simple_ds_twr_resp_sts.c \
  include\drivers\mk_trace.h include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_uart.h include\drivers\mk_dma.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\drivers\mk_uwb.h include\drivers\mk_mac.h \
  include\drivers\mk_phy.h include\drivers\mk_misc.h \
  include\drivers\mk_power.h include\drivers\mk_sleep_timer.h \
  include\components\algo\inc\lib_ranging.h include\drivers\mk_mac.h \
  include\drivers\mk_phy.h include\components\algo\inc\lib_aoa.h \
  include\board\board.h include\drivers\mk_common.h \
  include\drivers\mk_gpio.h include\drivers\mk_io.h
keil/Objects/simple_rx.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
./objects/simple_rx.o: \
  ..\..\..\..\src\uwb_examples\uwb_simple_example\simple_rx\simple_rx.c \
  include\drivers\mk_trace.h include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_uart.h include\drivers\mk_dma.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\drivers\mk_uwb.h include\drivers\mk_mac.h \
  include\drivers\mk_phy.h include\drivers\mk_misc.h \
  include\drivers\mk_power.h include\board\board.h \
  include\drivers\mk_common.h include\drivers\mk_gpio.h \
  include\drivers\mk_io.h
keil/Objects/simple_ss_twr_dw_init.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
./objects/simple_ss_twr_dw_init.o: simple_ss_twr_dw_init.c \
  ..\..\..\..\..\drivers\mk_trace.h ..\..\..\..\..\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  ..\..\..\..\..\devices\MK800X\Include\MK800X.h \
  ..\..\..\..\..\CMSIS\Include\core_cm0.h \
  ..\..\..\..\..\CMSIS\Include\cmsis_version.h \
  ..\..\..\..\..\CMSIS\Include\cmsis_compiler.h \
  ..\..\..\..\..\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  ..\..\..\..\..\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  ..\..\..\..\..\drivers\mk_uart.h ..\..\..\..\..\drivers\mk_dma.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  ..\..\..\..\..\drivers\mk_uwb.h ..\..\..\..\..\drivers\mk_mac.h \
  ..\..\..\..\..\drivers\mk_phy.h ..\..\..\..\..\drivers\mk_phy.h \
  ..\..\..\..\..\drivers\mk_misc.h ..\..\..\..\..\drivers\mk_power.h \
  ..\..\..\..\..\drivers\mk_sleep_timer.h \
  ..\..\..\..\..\components\algo\inc\lib_ranging.h \
  ..\..\..\..\..\drivers\mk_common.h ..\..\..\..\..\drivers\mk_mac.h \
  dw_app_anchor.h ..\..\..\board.h ..\..\..\..\..\drivers\mk_gpio.h \
  ..\..\..\..\..\drivers\mk_io.h
keil/Objects/simple_ss_twr_dw_resp.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
./objects/simple_ss_twr_dw_resp.o: simple_ss_twr_dw_resp.c \
  include\drivers\mk_trace.h include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_uart.h include\drivers\mk_dma.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\drivers\mk_uwb.h include\drivers\mk_mac.h \
  include\drivers\mk_phy.h include\drivers\mk_phy.h \
  include\drivers\mk_misc.h include\drivers\mk_power.h \
  include\drivers\mk_sleep_timer.h \
  include\components\algo\inc\lib_ranging.h include\drivers\mk_mac.h \
  dw_app_anchor.h include\board\board.h include\drivers\mk_common.h \
  include\drivers\mk_gpio.h include\drivers\mk_io.h
keil/Objects/simple_tx.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
./objects/simple_tx.o: \
  ..\..\..\..\src\uwb_examples\uwb_simple_example\simple_tx\simple_tx.c \
  include\drivers\mk_trace.h include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_uart.h include\drivers\mk_dma.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\drivers\mk_uwb.h include\drivers\mk_mac.h \
  include\drivers\mk_phy.h include\drivers\mk_misc.h \
  include\drivers\mk_power.h include\board\board.h \
  include\drivers\mk_common.h include\drivers\mk_gpio.h \
  include\drivers\mk_io.h
keil/Objects/startup_mk800x.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
./objects/startup_mk800x.o: \
  include\devices\MK800X\Source\startup_MK800X.c \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h
keil/Objects/system_mk800x.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
./objects/system_mk800x.o: include\devices\MK800X\Source\system_MK800X.c \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h
keil/Objects/usart.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
./objects/usart.o: include\drivers\Usart.c include\drivers\Usart.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdio.h \
  include\drivers\mk_uart.h include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_dma.h
keil/Objects/usart1.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
./objects/usart1.o: include\drivers\Usart1.c include\drivers\Usart.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  include\drivers\Usart1.h include\drivers\mk_dma.h \
  include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\drivers\mk_uart.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdio.h
keil/Objects/uwb_simple_example.axf
Binary files differ
keil/Objects/uwb_simple_example.build_log.htm
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,53 @@
<html>
<body>
<pre>
<h1>礦ision Build Log</h1>
<h2>Tool Versions:</h2>
IDE-Version: Î¼Vision V5.30.0.0
Copyright (C) 2020 ARM Ltd and ARM Germany GmbH. All rights reserved.
License Information: qweq xookko@outlook.com, qweqeq, LIC=47GU5-GD9Z0-FWK2N-Y9XQ0-MH3EA-KZ8D2
Tool Versions:
Toolchain:       MDK-ARM Plus  Version: 5.30.0.0
Toolchain Path:  d:\Keil_v5\ARM\ARMCLANG\Bin
C Compiler:      ArmClang.exe V6.14
Assembler:       Armasm.exe V6.14
Linker/Locator:  ArmLink.exe V6.14
Library Manager: ArmAr.exe V6.14
Hex Converter:   FromElf.exe V6.14
CPU DLL:         SARMCM3.DLL V5.30.0.0
Dialog DLL:      DARMCM1.DLL V1.19.3.0
Target DLL:      Segger\JL2CM3.dll V2.99.38.0
Dialog DLL:      TARMCM1.DLL V1.14.2.0
<h2>Project:</h2>
D:\project chen\uwb_simple_example_ss_twr_anchor\keil\uwb_simple_example.uvprojx
Project File Date:  07/29/2024
<h2>Output:</h2>
*** Using Compiler 'V6.14', folder: 'd:\Keil_v5\ARM\ARMCLANG\Bin'
Build target 'MK8000 Release'
linking...
.\include\devices\MK800X\Source\ARM\MK800X_ac6.sct(25): warning: L6314W: No section matches pattern *(.RAMCODE).
Program Size: Code=44740 RO-data=7276 RW-data=1264 ZI-data=23916
Finished: 0 information, 1 warning and 0 error messages.
FromELF: creating hex file...
After Build - User command #1: fromelf.exe --bincombined -o "Output\uwb_simple_example.bin" "D:\project chen\uwb_simple_example_ss_twr_anchor\keil\Objects\uwb_simple_example.axf"
".\Objects\uwb_simple_example.axf" - 0 Error(s), 1 Warning(s).
<h2>Software Packages used:</h2>
Package Vendor: MKSEMI
                http://www.mk-semi.com/MKSEMI.MK800X_DFP.1.0.3.pack
                MKSEMI.MK800X_DFP.1.0.3
                Device Family Pack for MK800X
<h2>Collection of Component include folders:</h2>
  .\RTE\_MK8000_Release
  d:\Users\xookk\AppData\Local\Arm\Packs\MKSEMI\MK800X_DFP\1.0.3\Device\Include
<h2>Collection of Component Files used:</h2>
Build Time Elapsed:  00:00:01
</pre>
</body>
</html>
keil/Objects/uwb_simple_example.htm
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,2150 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html><head>
<title>Static Call Graph - [.\Objects\uwb_simple_example.axf]</title></head>
<body><HR>
<H1>Static Call Graph for image .\Objects\uwb_simple_example.axf</H1><HR>
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 6140002: Last Updated: Mon Jul 29 17:39:11 2024
<BR><P>
<H3>Maximum Stack Usage =       1572 bytes + Unknown(Cycles, Untraceable Function Pointers)</H3><H3>
Call chain for Maximum Stack Depth:</H3>
rx_int_callback &rArr; ranging_rx_time &rArr; sts_first_path_detect &rArr; MK8000_sts_first_patch_detect &rArr; MK8000_sts_FAP_detect &rArr; MK8000_fap_adjust_FLT &rArr; lsp_scale_f32 &rArr; lsp_g_op_f32 &rArr; lsp_engine_run &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
<P>
<H3>
Mutually Recursive functions
</H3> <LI><a href="#[e6]">trace_output</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[49]">trace_printf</a><BR>
 <LI><a href="#[7]">ACMP0_IRQHandler</a>&nbsp;&nbsp;&nbsp;&rArr;&nbsp;&nbsp;&nbsp;<a href="#[7]">ACMP0_IRQHandler</a><BR>
</UL>
<P>
<H3>
Function Pointers
</H3><UL>
 <LI><a href="#[7]">ACMP0_IRQHandler</a> from startup_mk800x.o(.text.Default_Handler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[8]">ACMP1_IRQHandler</a> from startup_mk800x.o(.text.Default_Handler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[f]">ADC_IRQHandler</a> from mk_adc.o(.text.ADC_IRQHandler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[e]">AES_IRQHandler</a> from mk_aes.o(.text.AES_IRQHandler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[6]">BOD_IRQHandler</a> from mk_misc.o(.text.BOD_IRQHandler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[20]">CALIB_IRQHandler</a> from mk_calib.o(.text.CALIB_IRQHandler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[c]">DMA_IRQHandler</a> from mk_dma.o(.text.DMA_IRQHandler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[11]">FLASH_CTRL_IRQHandler</a> from mk_flash.o(.text.FLASH_CTRL_IRQHandler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[d]">GPIO_IRQHandler</a> from mk_gpio.o(.text.GPIO_IRQHandler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[2]">HardFault_Handler</a> from mk_trace.o(.text.HardFault_Handler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[1b]">I2C0_IRQHandler</a> from startup_mk800x.o(.text.Default_Handler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[12]">LSP_IRQHandler</a> from mk_lsp.o(.text.LSP_IRQHandler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[a]">MAC_IRQHandler</a> from mk_mac.o(.text.MAC_IRQHandler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[1]">NMI_Handler</a> from startup_mk800x.o(.text.Default_Handler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[b]">PHY_IRQHandler</a> from mk_phy.o(.text.PHY_IRQHandler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[23]">PHY_TIMER_IRQHandler</a> from mk_phy.o(.text.PHY_TIMER_IRQHandler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[16]">PWM_IRQHandler</a> from startup_mk800x.o(.text.Default_Handler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[4]">PendSV_Handler</a> from startup_mk800x.o(.text.Default_Handler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[21]">RCO32K_CAL_IRQHandler</a> from mk_rtc.o(.text.RCO32K_CAL_IRQHandler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[14]">RTC_ALARM_IRQHandler</a> from mk_rtc.o(.text.RTC_ALARM_IRQHandler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[15]">RTC_TICK_IRQHandler</a> from mk_rtc.o(.text.RTC_TICK_IRQHandler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[0]">Reset_Handler</a> from startup_mk800x.o(.text.Reset_Handler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[9]">SLEEP_TIMER_IRQHandler</a> from mk_sleep_timer.o(.text.SLEEP_TIMER_IRQHandler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[1c]">SPI0_IRQHandler</a> from startup_mk800x.o(.text.Default_Handler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[1d]">SPI1_IRQHandler</a> from startup_mk800x.o(.text.Default_Handler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[3]">SVC_Handler</a> from startup_mk800x.o(.text.Default_Handler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[5]">SysTick_Handler</a> from mk_misc.o(.text.SysTick_Handler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[17]">TIMER0_IRQHandler</a> from startup_mk800x.o(.text.Default_Handler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[18]">TIMER1_IRQHandler</a> from startup_mk800x.o(.text.Default_Handler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[19]">TIMER2_IRQHandler</a> from mk_dual_timer.o(.text.TIMER2_IRQHandler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[1a]">TIMER3_IRQHandler</a> from mk_dual_timer.o(.text.TIMER3_IRQHandler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[10]">TRNG_IRQHandler</a> from startup_mk800x.o(.text.Default_Handler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[1e]">UART0_IRQHandler</a> from mk_uart.o(.text.UART0_IRQHandler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[1f]">UART1_IRQHandler</a> from mk_uart.o(.text.UART1_IRQHandler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[27]">UsartParseDataHandler</a> from serial_at_cmd_app.o(.text.UsartParseDataHandler) referenced from main.o(.text.main)
 <LI><a href="#[22]">WAKEUP_IRQHandler</a> from startup_mk800x.o(.text.Default_Handler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[13]">WDT_IRQHandler</a> from mk_wdt.o(.text.WDT_IRQHandler) referenced from startup_mk800x.o(RESET)
 <LI><a href="#[2b]">__main</a> from entry.o(.ARM.Collect$$$$00000000) referenced from startup_mk800x.o(.text.start_main_asm)
 <LI><a href="#[25]">flash_dma_callback</a> from mk_flash.o(.text.flash_dma_callback) referenced from mk_flash.o(.text.flash_dma_callback)
 <LI><a href="#[25]">flash_dma_callback</a> from mk_flash.o(.text.flash_dma_callback) referenced from mk_flash.o(.text.flash_read)
 <LI><a href="#[26]">flash_dma_write_nbytes_callback</a> from mk_flash.o(.text.flash_dma_write_nbytes_callback) referenced from mk_flash.o(.text.flash_dma_write_nbytes_callback)
 <LI><a href="#[26]">flash_dma_write_nbytes_callback</a> from mk_flash.o(.text.flash_dma_write_nbytes_callback) referenced from mk_flash.o(.text.flash_write_nbytes)
 <LI><a href="#[24]">main</a> from main.o(.text.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B)
 <LI><a href="#[2a]">rx_int_callback</a> from simple_ss_twr_dw_resp.o(.text.rx_int_callback) referenced from simple_ss_twr_dw_resp.o(.text.simple_main)
 <LI><a href="#[2c]">trace_sending_continue</a> from mk_trace.o(.text.trace_sending_continue) referenced from mk_trace.o(.text.trace_output)
 <LI><a href="#[2c]">trace_sending_continue</a> from mk_trace.o(.text.trace_sending_continue) referenced from mk_trace.o(.text.trace_sending_continue)
 <LI><a href="#[29]">tx_int_callback</a> from simple_ss_twr_dw_resp.o(.text.tx_int_callback) referenced from simple_ss_twr_dw_resp.o(.text.simple_main)
 <LI><a href="#[2d]">uart_dma_callback</a> from mk_uart.o(.text.uart_dma_callback) referenced from mk_uart.o(.text.uart_send)
 <LI><a href="#[28]">uart_receive_callback</a> from main.o(.text.uart_receive_callback) referenced from main.o(.text.main)
</UL>
<P>
<H3>
Global Symbols
</H3>
<P><STRONG><a name="[2b]"></a>__main</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry.o(.ARM.Collect$$$$00000000))
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(.text.start_main_asm)
</UL>
<P><STRONG><a name="[f3]"></a>_main_stk</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry4.o(.ARM.Collect$$$$00000003))
<P><STRONG><a name="[2e]"></a>_main_scatterload</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))
<BR><BR>[Calls]<UL><LI><a href="#[2f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__scatterload
</UL>
<P><STRONG><a name="[47]"></a>__main_after_scatterload</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))
<BR><BR>[Called By]<UL><LI><a href="#[2f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__scatterload
</UL>
<P><STRONG><a name="[f4]"></a>_main_clock</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008))
<P><STRONG><a name="[f5]"></a>_main_cpp_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A))
<P><STRONG><a name="[f6]"></a>_main_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B))
<P><STRONG><a name="[f7]"></a>__rt_final_cpp</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D))
<P><STRONG><a name="[f8]"></a>__rt_final_exit</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$0000000F))
<P><STRONG><a name="[59]"></a>__aeabi_uidiv</STRONG> (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = __aeabi_uidiv
</UL>
<BR>[Called By]<UL><LI><a href="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_format
<LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_PrintUnsigned
<LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_PrintInt
<LI><a href="#[21]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;RCO32K_CAL_IRQHandler
<LI><a href="#[7d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;rtc_second_to_time
<LI><a href="#[ab]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_write_nbytes
<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_sector_erase
<LI><a href="#[78]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_read
<LI><a href="#[a9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_erase
<LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_block_erase
<LI><a href="#[aa]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_write_quad_mode
<LI><a href="#[dd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_rx
<LI><a href="#[24]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
<LI><a href="#[bc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_tx_desc_construct
<LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_sts_FAP_detect
<LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_all_antenna_FAP
</UL>
<P><STRONG><a name="[31]"></a>__aeabi_uidivmod</STRONG> (Thumb, 44 bytes, Stack size 12 bytes, uidiv.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = __aeabi_uidivmod
</UL>
<BR>[Called By]<UL><LI><a href="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_format
<LI><a href="#[7d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;rtc_second_to_time
<LI><a href="#[a9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_erase
<LI><a href="#[4a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Anchor_RecNearPoll
<LI><a href="#[a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MAC_IRQHandler
<LI><a href="#[30]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_idivmod
</UL>
<P><STRONG><a name="[7a]"></a>__aeabi_idiv</STRONG> (Thumb, 0 bytes, Stack size 16 bytes, idiv.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = __aeabi_idiv
</UL>
<BR>[Called By]<UL><LI><a href="#[21]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;RCO32K_CAL_IRQHandler
<LI><a href="#[7d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;rtc_second_to_time
</UL>
<P><STRONG><a name="[30]"></a>__aeabi_idivmod</STRONG> (Thumb, 40 bytes, Stack size 16 bytes, idiv.o(.text), UNUSED)
<BR><BR>[Calls]<UL><LI><a href="#[31]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
</UL>
<P><STRONG><a name="[84]"></a>__aeabi_memcpy</STRONG> (Thumb, 36 bytes, Stack size 0 bytes, memcpya.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;aes_open
<LI><a href="#[e6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_output
<LI><a href="#[27]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UsartParseDataHandler
<LI><a href="#[cc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_params_generate
<LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;simple_main
<LI><a href="#[2a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;rx_int_callback
<LI><a href="#[bc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_tx_desc_construct
<LI><a href="#[c9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;pdoa_ant_delays_set
</UL>
<P><STRONG><a name="[cd]"></a>__aeabi_memcpy4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[cc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_params_generate
</UL>
<P><STRONG><a name="[f9]"></a>__aeabi_memcpy8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED)
<P><STRONG><a name="[33]"></a>__aeabi_memset</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, memseta.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[77]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;PalFlashRead
<LI><a href="#[34]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_memset$wrapper
<LI><a href="#[32]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr
</UL>
<P><STRONG><a name="[d0]"></a>__aeabi_memset4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[cc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_params_generate
</UL>
<P><STRONG><a name="[fa]"></a>__aeabi_memset8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
<P><STRONG><a name="[32]"></a>__aeabi_memclr</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, memseta.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[33]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memset
</UL>
<BR>[Called By]<UL><LI><a href="#[cc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_params_generate
</UL>
<P><STRONG><a name="[e7]"></a>__aeabi_memclr4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_printf
</UL>
<P><STRONG><a name="[b5]"></a>__aeabi_memclr8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[b4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_init
</UL>
<P><STRONG><a name="[34]"></a>_memset$wrapper</STRONG> (Thumb, 18 bytes, Stack size 8 bytes, memseta.o(.text), UNUSED)
<BR><BR>[Calls]<UL><LI><a href="#[33]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memset
</UL>
<P><STRONG><a name="[35]"></a>__aeabi_fadd</STRONG> (Thumb, 162 bytes, Stack size 24 bytes, fadd.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = __aeabi_fadd &rArr; _float_epilogue
</UL>
<BR>[Calls]<UL><LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_float_round
<LI><a href="#[36]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_float_epilogue
</UL>
<BR>[Called By]<UL><LI><a href="#[6f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_read_rssi
<LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_preamble_FAP_LSP
<LI><a href="#[39]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_frsub
<LI><a href="#[5b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;derive_scaled_thres
<LI><a href="#[5c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;enhanced_sts_fap_detect
<LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_sts_FAP_detect
<LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fsub
</UL>
<P><STRONG><a name="[38]"></a>__aeabi_fsub</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, fadd.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = __aeabi_fsub &rArr; __aeabi_fadd &rArr; _float_epilogue
</UL>
<BR>[Calls]<UL><LI><a href="#[35]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fadd
</UL>
<BR>[Called By]<UL><LI><a href="#[6f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_read_rssi
<LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_preamble_FAP_LSP
<LI><a href="#[67]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_fap_adjust_FLT
<LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_sts_FAP_detect
</UL>
<P><STRONG><a name="[39]"></a>__aeabi_frsub</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, fadd.o(.text), UNUSED)
<BR><BR>[Calls]<UL><LI><a href="#[35]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fadd
</UL>
<P><STRONG><a name="[6a]"></a>__aeabi_fmul</STRONG> (Thumb, 122 bytes, Stack size 16 bytes, fmul.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = __aeabi_fmul
</UL>
<BR>[Called By]<UL><LI><a href="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_format
<LI><a href="#[d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ranging_rx_time
<LI><a href="#[6f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_read_rssi
<LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_preamble_FAP_LSP
<LI><a href="#[5b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;derive_scaled_thres
<LI><a href="#[5c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;enhanced_sts_fap_detect
<LI><a href="#[69]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_fap_adjust_simple
<LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_sts_FAP_detect
<LI><a href="#[71]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_sts_first_patch_detect
</UL>
<P><STRONG><a name="[3a]"></a>__aeabi_fdiv</STRONG> (Thumb, 124 bytes, Stack size 16 bytes, fdiv.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = __aeabi_fdiv
</UL>
<BR>[Calls]<UL><LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_float_round
</UL>
<BR>[Called By]<UL><LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_sts_FAP_detect
<LI><a href="#[5f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_blender_packet
<LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_all_antenna_FAP
</UL>
<P><STRONG><a name="[3b]"></a>__aeabi_dmul</STRONG> (Thumb, 202 bytes, Stack size 72 bytes, dmul.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 128<LI>Call Chain = __aeabi_dmul &rArr; _double_epilogue &rArr; __aeabi_llsr
</UL>
<BR>[Calls]<UL><LI><a href="#[3c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_double_epilogue
</UL>
<BR>[Called By]<UL><LI><a href="#[cc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_params_generate
</UL>
<P><STRONG><a name="[3d]"></a>__aeabi_ddiv</STRONG> (Thumb, 234 bytes, Stack size 40 bytes, ddiv.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 48<LI>Call Chain = __aeabi_ddiv &rArr; _double_round
</UL>
<BR>[Calls]<UL><LI><a href="#[3e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_double_round
</UL>
<BR>[Called By]<UL><LI><a href="#[cc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_params_generate
</UL>
<P><STRONG><a name="[5a]"></a>__aeabi_fcmple</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, fcmple.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[5c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;enhanced_sts_fap_detect
<LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_sts_FAP_detect
<LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_all_antenna_FAP
</UL>
<P><STRONG><a name="[5d]"></a>__aeabi_fcmplt</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, fcmplt.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[5c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;enhanced_sts_fap_detect
<LI><a href="#[67]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_fap_adjust_FLT
<LI><a href="#[69]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_fap_adjust_simple
<LI><a href="#[63]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_fap_adjust
<LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_sts_FAP_detect
<LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_all_antenna_FAP
</UL>
<P><STRONG><a name="[62]"></a>__aeabi_fcmpge</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, fcmpge.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_format
<LI><a href="#[5b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;derive_scaled_thres
<LI><a href="#[5c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;enhanced_sts_fap_detect
<LI><a href="#[5f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_blender_packet
</UL>
<P><STRONG><a name="[61]"></a>__aeabi_fcmpgt</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, fcmpgt.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_preamble_FAP_LSP
<LI><a href="#[67]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_fap_adjust_FLT
<LI><a href="#[69]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_fap_adjust_simple
<LI><a href="#[63]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_fap_adjust
<LI><a href="#[5f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_blender_packet
</UL>
<P><STRONG><a name="[68]"></a>__aeabi_fcmpeq</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, fcmpeq.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[67]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_fap_adjust_FLT
</UL>
<P><STRONG><a name="[3f]"></a>__aeabi_i2f</STRONG> (Thumb, 22 bytes, Stack size 8 bytes, fflti.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = __aeabi_i2f &rArr; _float_epilogue
</UL>
<BR>[Calls]<UL><LI><a href="#[36]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_float_epilogue
</UL>
<BR>[Called By]<UL><LI><a href="#[6f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_read_rssi
<LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_preamble_FAP_LSP
<LI><a href="#[63]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_fap_adjust
<LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_sts_FAP_detect
</UL>
<P><STRONG><a name="[40]"></a>__aeabi_ui2f</STRONG> (Thumb, 14 bytes, Stack size 8 bytes, ffltui.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = __aeabi_ui2f &rArr; _float_epilogue
</UL>
<BR>[Calls]<UL><LI><a href="#[36]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_float_epilogue
</UL>
<BR>[Called By]<UL><LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_preamble_FAP_LSP
<LI><a href="#[5b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;derive_scaled_thres
<LI><a href="#[69]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_fap_adjust_simple
<LI><a href="#[63]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_fap_adjust
<LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_sts_FAP_detect
</UL>
<P><STRONG><a name="[41]"></a>__aeabi_ui2d</STRONG> (Thumb, 24 bytes, Stack size 16 bytes, dfltui.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 72<LI>Call Chain = __aeabi_ui2d &rArr; _double_epilogue &rArr; __aeabi_llsr
</UL>
<BR>[Calls]<UL><LI><a href="#[3c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_double_epilogue
</UL>
<BR>[Called By]<UL><LI><a href="#[cc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_params_generate
</UL>
<P><STRONG><a name="[5e]"></a>__aeabi_f2iz</STRONG> (Thumb, 50 bytes, Stack size 0 bytes, ffixi.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_format
<LI><a href="#[d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ranging_rx_time
<LI><a href="#[57]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ranging_rssi_get
<LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_sts_FAP_detect
<LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_all_antenna_FAP
<LI><a href="#[71]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_sts_first_patch_detect
</UL>
<P><STRONG><a name="[6e]"></a>__aeabi_f2uiz</STRONG> (Thumb, 40 bytes, Stack size 0 bytes, ffixui.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_preamble_FAP_LSP
</UL>
<P><STRONG><a name="[42]"></a>__aeabi_d2iz</STRONG> (Thumb, 62 bytes, Stack size 16 bytes, dfixi.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = __aeabi_d2iz &rArr; __aeabi_llsr
</UL>
<BR>[Calls]<UL><LI><a href="#[43]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_llsr
</UL>
<BR>[Called By]<UL><LI><a href="#[cc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_params_generate
</UL>
<P><STRONG><a name="[ce]"></a>__aeabi_f2d</STRONG> (Thumb, 40 bytes, Stack size 0 bytes, f2d.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[cc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_params_generate
</UL>
<P><STRONG><a name="[44]"></a>__aeabi_d2f</STRONG> (Thumb, 56 bytes, Stack size 8 bytes, d2f.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = __aeabi_d2f
</UL>
<BR>[Calls]<UL><LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_float_round
</UL>
<BR>[Called By]<UL><LI><a href="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_format
</UL>
<P><STRONG><a name="[46]"></a>__aeabi_llsl</STRONG> (Thumb, 32 bytes, Stack size 8 bytes, llshl.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = __aeabi_llsl
</UL>
<BR>[Called By]<UL><LI><a href="#[3c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_double_epilogue
</UL>
<P><STRONG><a name="[fb]"></a>_ll_shift_l</STRONG> (Thumb, 0 bytes, Stack size 8 bytes, llshl.o(.text), UNUSED)
<P><STRONG><a name="[43]"></a>__aeabi_llsr</STRONG> (Thumb, 34 bytes, Stack size 8 bytes, llushr.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = __aeabi_llsr
</UL>
<BR>[Called By]<UL><LI><a href="#[42]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_d2iz
<LI><a href="#[3c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_double_epilogue
</UL>
<P><STRONG><a name="[fc]"></a>_ll_ushift_r</STRONG> (Thumb, 0 bytes, Stack size 8 bytes, llushr.o(.text), UNUSED)
<P><STRONG><a name="[fd]"></a>__I$use$fp</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, iusefp.o(.text), UNUSED)
<P><STRONG><a name="[37]"></a>_float_round</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, fepilogue.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[35]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fadd
<LI><a href="#[3a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fdiv
<LI><a href="#[44]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_d2f
</UL>
<P><STRONG><a name="[36]"></a>_float_epilogue</STRONG> (Thumb, 114 bytes, Stack size 12 bytes, fepilogue.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = _float_epilogue
</UL>
<BR>[Called By]<UL><LI><a href="#[3f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_i2f
<LI><a href="#[35]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fadd
<LI><a href="#[40]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_ui2f
</UL>
<P><STRONG><a name="[3e]"></a>_double_round</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, depilogue.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = _double_round
</UL>
<BR>[Called By]<UL><LI><a href="#[3c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_double_epilogue
<LI><a href="#[3d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_ddiv
</UL>
<P><STRONG><a name="[3c]"></a>_double_epilogue</STRONG> (Thumb, 164 bytes, Stack size 48 bytes, depilogue.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 56<LI>Call Chain = _double_epilogue &rArr; __aeabi_llsr
</UL>
<BR>[Calls]<UL><LI><a href="#[45]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__ARM_clz
<LI><a href="#[43]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_llsr
<LI><a href="#[46]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_llsl
<LI><a href="#[3e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_double_round
</UL>
<BR>[Called By]<UL><LI><a href="#[3b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_dmul
<LI><a href="#[41]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_ui2d
</UL>
<P><STRONG><a name="[2f]"></a>__scatterload</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, init.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[47]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__main_after_scatterload
</UL>
<BR>[Called By]<UL><LI><a href="#[2e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_main_scatterload
</UL>
<P><STRONG><a name="[fe]"></a>__scatterload_rt2</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED)
<P><STRONG><a name="[ff]"></a>__decompress</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __dczerorl.o(.text), UNUSED)
<P><STRONG><a name="[100]"></a>__decompress0</STRONG> (Thumb, 58 bytes, Stack size unknown bytes, __dczerorl.o(.text), UNUSED)
<P><STRONG><a name="[f]"></a>ADC_IRQHandler</STRONG> (Thumb, 228 bytes, Stack size 8 bytes, mk_adc.o(.text.ADC_IRQHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 308<LI>Call Chain = ADC_IRQHandler &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[e]"></a>AES_IRQHandler</STRONG> (Thumb, 360 bytes, Stack size 24 bytes, mk_aes.o(.text.AES_IRQHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 764<LI>Call Chain = AES_IRQHandler &rArr; trace_printf &rArr; trace_output &rArr;  trace_printf (Cycle)
</UL>
<BR>[Calls]<UL><LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_printf
<LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[4a]"></a>Anchor_RecNearPoll</STRONG> (Thumb, 320 bytes, Stack size 24 bytes, simple_ss_twr_dw_resp.o(.text.Anchor_RecNearPoll))
<BR><BR>[Stack]<UL><LI>Max Depth = 452<LI>Call Chain = Anchor_RecNearPoll &rArr; uwb_tx &rArr; mac_tx &rArr; mac_tx_desc_construct &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[50]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_is_busy
<LI><a href="#[4f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_tx
<LI><a href="#[4b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_timer_count_get
<LI><a href="#[4d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ranging_tx_time
<LI><a href="#[4c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_shr_duration
<LI><a href="#[4e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ranging_ant_delays_get
<LI><a href="#[31]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
</UL>
<BR>[Called By]<UL><LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;simple_main
</UL>
<P><STRONG><a name="[6]"></a>BOD_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, mk_misc.o(.text.BOD_IRQHandler))
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[20]"></a>CALIB_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, mk_calib.o(.text.CALIB_IRQHandler))
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[c]"></a>DMA_IRQHandler</STRONG> (Thumb, 112 bytes, Stack size 24 bytes, mk_dma.o(.text.DMA_IRQHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = DMA_IRQHandler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[7]"></a>ACMP0_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler))
<BR><BR>[Calls]<UL><LI><a href="#[7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ACMP0_IRQHandler
</UL>
<BR>[Called By]<UL><LI><a href="#[7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ACMP0_IRQHandler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[8]"></a>ACMP1_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler))
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[101]"></a>Default_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler), UNUSED)
<P><STRONG><a name="[1b]"></a>I2C0_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler))
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[1]"></a>NMI_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler))
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[16]"></a>PWM_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler))
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[4]"></a>PendSV_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler))
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[1c]"></a>SPI0_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler))
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[1d]"></a>SPI1_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler))
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[3]"></a>SVC_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler))
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[17]"></a>TIMER0_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler))
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[18]"></a>TIMER1_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler))
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[10]"></a>TRNG_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler))
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[22]"></a>WAKEUP_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Default_Handler))
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[11]"></a>FLASH_CTRL_IRQHandler</STRONG> (Thumb, 44 bytes, Stack size 8 bytes, mk_flash.o(.text.FLASH_CTRL_IRQHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = FLASH_CTRL_IRQHandler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[d]"></a>GPIO_IRQHandler</STRONG> (Thumb, 60 bytes, Stack size 24 bytes, mk_gpio.o(.text.GPIO_IRQHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = GPIO_IRQHandler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[2]"></a>HardFault_Handler</STRONG> (Thumb, 124 bytes, Stack size 0 bytes, mk_trace.o(.text.HardFault_Handler))
<BR><BR>[Stack]<UL><LI>Max Depth = 276<LI>Call Chain = HardFault_Handler &rArr; trace_exception_handler &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[51]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_exception_handler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[12]"></a>LSP_IRQHandler</STRONG> (Thumb, 32 bytes, Stack size 8 bytes, mk_lsp.o(.text.LSP_IRQHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = LSP_IRQHandler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[a]"></a>MAC_IRQHandler</STRONG> (Thumb, 1260 bytes, Stack size 120 bytes, mk_mac.o(.text.MAC_IRQHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 860<LI>Call Chain = MAC_IRQHandler &rArr; trace_printf &rArr; trace_output &rArr;  trace_printf (Cycle)
</UL>
<BR>[Calls]<UL><LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_printf
<LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;sys_timer_get
<LI><a href="#[55]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_timer_stop
<LI><a href="#[54]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;exit_debug_mode
<LI><a href="#[53]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_dump_mode
<LI><a href="#[52]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;fira_vendor_oui_process
<LI><a href="#[57]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ranging_rssi_get
<LI><a href="#[31]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[58]"></a>MK8000_all_antenna_FAP</STRONG> (Thumb, 496 bytes, Stack size 168 bytes, mk8000_all_antenna_fap.o(.text.MK8000_all_antenna_FAP))
<BR><BR>[Stack]<UL><LI>Max Depth = 276<LI>Call Chain = MK8000_all_antenna_FAP &rArr; enhanced_sts_fap_detect &rArr; __aeabi_fadd &rArr; _float_epilogue
</UL>
<BR>[Calls]<UL><LI><a href="#[3a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fdiv
<LI><a href="#[5e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_f2iz
<LI><a href="#[5d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fcmplt
<LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidiv
<LI><a href="#[5b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;derive_scaled_thres
<LI><a href="#[5c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;enhanced_sts_fap_detect
<LI><a href="#[5a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fcmple
</UL>
<BR>[Called By]<UL><LI><a href="#[72]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_update_fap_fom
<LI><a href="#[71]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_sts_first_patch_detect
</UL>
<P><STRONG><a name="[5f]"></a>MK8000_blender_packet</STRONG> (Thumb, 548 bytes, Stack size 64 bytes, mk8000_blender_top.o(.text.MK8000_blender_packet))
<BR><BR>[Stack]<UL><LI>Max Depth = 460<LI>Call Chain = MK8000_blender_packet &rArr; lsp_cmplx_inner_product_f32 &rArr; lsp_g_op_f32 &rArr; lsp_engine_run &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[62]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fcmpge
<LI><a href="#[3a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fdiv
<LI><a href="#[60]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_cmplx_inner_product_f32
<LI><a href="#[61]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fcmpgt
</UL>
<BR>[Called By]<UL><LI><a href="#[72]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_update_fap_fom
<LI><a href="#[71]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_sts_first_patch_detect
</UL>
<P><STRONG><a name="[63]"></a>MK8000_fap_adjust</STRONG> (Thumb, 192 bytes, Stack size 48 bytes, mk8000_fap_adjust.o(.text.MK8000_fap_adjust))
<BR><BR>[Stack]<UL><LI>Max Depth = 452<LI>Call Chain = MK8000_fap_adjust &rArr; lsp_scale_f32 &rArr; lsp_g_op_f32 &rArr; lsp_engine_run &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[3f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_i2f
<LI><a href="#[40]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_ui2f
<LI><a href="#[5d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fcmplt
<LI><a href="#[65]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_scale_f32
<LI><a href="#[66]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_inner_product_f32
<LI><a href="#[64]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_vinverse_f32
<LI><a href="#[61]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fcmpgt
</UL>
<BR>[Called By]<UL><LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_preamble_FAP_LSP
</UL>
<P><STRONG><a name="[67]"></a>MK8000_fap_adjust_FLT</STRONG> (Thumb, 196 bytes, Stack size 48 bytes, mk8000_fap_adjust.o(.text.MK8000_fap_adjust_FLT))
<BR><BR>[Stack]<UL><LI>Max Depth = 452<LI>Call Chain = MK8000_fap_adjust_FLT &rArr; lsp_scale_f32 &rArr; lsp_g_op_f32 &rArr; lsp_engine_run &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[5d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fcmplt
<LI><a href="#[65]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_scale_f32
<LI><a href="#[66]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_inner_product_f32
<LI><a href="#[64]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_vinverse_f32
<LI><a href="#[68]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fcmpeq
<LI><a href="#[61]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fcmpgt
<LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fsub
</UL>
<BR>[Called By]<UL><LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_sts_FAP_detect
</UL>
<P><STRONG><a name="[69]"></a>MK8000_fap_adjust_simple</STRONG> (Thumb, 232 bytes, Stack size 48 bytes, mk8000_fap_adjust.o(.text.MK8000_fap_adjust_simple))
<BR><BR>[Stack]<UL><LI>Max Depth = 452<LI>Call Chain = MK8000_fap_adjust_simple &rArr; lsp_scale_f32 &rArr; lsp_g_op_f32 &rArr; lsp_engine_run &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[6a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fmul
<LI><a href="#[40]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_ui2f
<LI><a href="#[5d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fcmplt
<LI><a href="#[65]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_scale_f32
<LI><a href="#[66]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_inner_product_f32
<LI><a href="#[64]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_vinverse_f32
<LI><a href="#[61]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fcmpgt
</UL>
<BR>[Called By]<UL><LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_preamble_FAP_LSP
</UL>
<P><STRONG><a name="[6b]"></a>MK8000_preamble_FAP_LSP</STRONG> (Thumb, 1400 bytes, Stack size 136 bytes, mk8000_preamble_fap_lsp.o(.text.MK8000_preamble_FAP_LSP))
<BR><BR>[Stack]<UL><LI>Max Depth = 588<LI>Call Chain = MK8000_preamble_FAP_LSP &rArr; MK8000_fap_adjust_simple &rArr; lsp_scale_f32 &rArr; lsp_g_op_f32 &rArr; lsp_engine_run &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[3f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_i2f
<LI><a href="#[6a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fmul
<LI><a href="#[35]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fadd
<LI><a href="#[40]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_ui2f
<LI><a href="#[6e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_f2uiz
<LI><a href="#[6c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_cmplx_mult_cmplx_int8
<LI><a href="#[6d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_inner_product_int16
<LI><a href="#[64]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_vinverse_f32
<LI><a href="#[61]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fcmpgt
<LI><a href="#[69]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_fap_adjust_simple
<LI><a href="#[63]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_fap_adjust
<LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fsub
</UL>
<BR>[Called By]<UL><LI><a href="#[d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ranging_rx_time
</UL>
<P><STRONG><a name="[6f]"></a>MK8000_read_rssi</STRONG> (Thumb, 1176 bytes, Stack size 80 bytes, mk8000_read_rssi.o(.text.MK8000_read_rssi))
<BR><BR>[Stack]<UL><LI>Max Depth = 116<LI>Call Chain = MK8000_read_rssi &rArr; __aeabi_fadd &rArr; _float_epilogue
</UL>
<BR>[Calls]<UL><LI><a href="#[3f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_i2f
<LI><a href="#[6a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fmul
<LI><a href="#[35]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fadd
<LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fsub
</UL>
<BR>[Called By]<UL><LI><a href="#[57]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ranging_rssi_get
</UL>
<P><STRONG><a name="[70]"></a>MK8000_sts_FAP_detect</STRONG> (Thumb, 1834 bytes, Stack size 960 bytes, mk8000_sts_fap_detect.o(.text.MK8000_sts_FAP_detect))
<BR><BR>[Stack]<UL><LI>Max Depth = 1412<LI>Call Chain = MK8000_sts_FAP_detect &rArr; MK8000_fap_adjust_FLT &rArr; lsp_scale_f32 &rArr; lsp_g_op_f32 &rArr; lsp_engine_run &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[3f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_i2f
<LI><a href="#[6a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fmul
<LI><a href="#[35]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fadd
<LI><a href="#[40]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_ui2f
<LI><a href="#[3a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fdiv
<LI><a href="#[5e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_f2iz
<LI><a href="#[5d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fcmplt
<LI><a href="#[60]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_cmplx_inner_product_f32
<LI><a href="#[65]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_scale_f32
<LI><a href="#[66]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_inner_product_f32
<LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidiv
<LI><a href="#[5c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;enhanced_sts_fap_detect
<LI><a href="#[67]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_fap_adjust_FLT
<LI><a href="#[5a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fcmple
<LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fsub
</UL>
<BR>[Called By]<UL><LI><a href="#[71]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_sts_first_patch_detect
</UL>
<P><STRONG><a name="[71]"></a>MK8000_sts_first_patch_detect</STRONG> (Thumb, 160 bytes, Stack size 64 bytes, mk8000_spotter_top.o(.text.MK8000_sts_first_patch_detect))
<BR><BR>[Stack]<UL><LI>Max Depth = 1476<LI>Call Chain = MK8000_sts_first_patch_detect &rArr; MK8000_sts_FAP_detect &rArr; MK8000_fap_adjust_FLT &rArr; lsp_scale_f32 &rArr; lsp_g_op_f32 &rArr; lsp_engine_run &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[6a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fmul
<LI><a href="#[5e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_f2iz
<LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_sts_FAP_detect
<LI><a href="#[5f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_blender_packet
<LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_all_antenna_FAP
</UL>
<BR>[Called By]<UL><LI><a href="#[d7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;sts_first_path_detect
</UL>
<P><STRONG><a name="[72]"></a>MK8000_update_fap_fom</STRONG> (Thumb, 108 bytes, Stack size 56 bytes, mk8000_spotter_top.o(.text.MK8000_update_fap_fom))
<BR><BR>[Stack]<UL><LI>Max Depth = 516<LI>Call Chain = MK8000_update_fap_fom &rArr; MK8000_blender_packet &rArr; lsp_cmplx_inner_product_f32 &rArr; lsp_g_op_f32 &rArr; lsp_engine_run &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[5f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_blender_packet
<LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_all_antenna_FAP
</UL>
<BR>[Called By]<UL><LI><a href="#[d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ranging_rx_time
</UL>
<P><STRONG><a name="[b]"></a>PHY_IRQHandler</STRONG> (Thumb, 76 bytes, Stack size 8 bytes, mk_phy.o(.text.PHY_IRQHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = PHY_IRQHandler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[23]"></a>PHY_TIMER_IRQHandler</STRONG> (Thumb, 56 bytes, Stack size 8 bytes, mk_phy.o(.text.PHY_TIMER_IRQHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 308<LI>Call Chain = PHY_TIMER_IRQHandler &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[73]"></a>PalFlashEraseSector</STRONG> (Thumb, 56 bytes, Stack size 16 bytes, pal_flash.o(.text.PalFlashEraseSector))
<BR><BR>[Stack]<UL><LI>Max Depth = 356<LI>Call Chain = PalFlashEraseSector &rArr; flash_sector_erase &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_sector_erase
</UL>
<BR>[Called By]<UL><LI><a href="#[87]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WsfNvmInit
</UL>
<P><STRONG><a name="[75]"></a>PalFlashInit</STRONG> (Thumb, 24 bytes, Stack size 8 bytes, pal_flash.o(.text.PalFlashInit))
<BR><BR>[Stack]<UL><LI>Max Depth = 772<LI>Call Chain = PalFlashInit &rArr; flash_open &rArr; trace_printf &rArr; trace_output &rArr;  trace_printf (Cycle)
</UL>
<BR>[Calls]<UL><LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_open
</UL>
<BR>[Called By]<UL><LI><a href="#[87]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WsfNvmInit
</UL>
<P><STRONG><a name="[77]"></a>PalFlashRead</STRONG> (Thumb, 44 bytes, Stack size 16 bytes, pal_flash.o(.text.PalFlashRead))
<BR><BR>[Stack]<UL><LI>Max Depth = 436<LI>Call Chain = PalFlashRead &rArr; flash_read &rArr; dma_transfer &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[78]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_read
<LI><a href="#[33]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memset
</UL>
<BR>[Called By]<UL><LI><a href="#[87]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WsfNvmInit
</UL>
<P><STRONG><a name="[89]"></a>PalNvmGetSectorSize</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, pal_flash.o(.text.PalNvmGetSectorSize))
<BR><BR>[Called By]<UL><LI><a href="#[87]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WsfNvmInit
</UL>
<P><STRONG><a name="[88]"></a>PalNvmGetTotalSize</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, pal_flash.o(.text.PalNvmGetTotalSize))
<BR><BR>[Called By]<UL><LI><a href="#[87]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WsfNvmInit
</UL>
<P><STRONG><a name="[21]"></a>RCO32K_CAL_IRQHandler</STRONG> (Thumb, 228 bytes, Stack size 32 bytes, mk_rtc.o(.text.RCO32K_CAL_IRQHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 772<LI>Call Chain = RCO32K_CAL_IRQHandler &rArr; trace_printf &rArr; trace_output &rArr;  trace_printf (Cycle)
</UL>
<BR>[Calls]<UL><LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_printf
<LI><a href="#[7c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;clock_disable
<LI><a href="#[79]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;clock_get_frequency
<LI><a href="#[7b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;sleep_timer_ppm_set
<LI><a href="#[7a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_idiv
<LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidiv
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[14]"></a>RTC_ALARM_IRQHandler</STRONG> (Thumb, 44 bytes, Stack size 24 bytes, mk_rtc.o(.text.RTC_ALARM_IRQHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 80<LI>Call Chain = RTC_ALARM_IRQHandler &rArr; rtc_second_to_time &rArr; __aeabi_idiv
</UL>
<BR>[Calls]<UL><LI><a href="#[7d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;rtc_second_to_time
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[15]"></a>RTC_TICK_IRQHandler</STRONG> (Thumb, 52 bytes, Stack size 24 bytes, mk_rtc.o(.text.RTC_TICK_IRQHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 80<LI>Call Chain = RTC_TICK_IRQHandler &rArr; rtc_second_to_time &rArr; __aeabi_idiv
</UL>
<BR>[Calls]<UL><LI><a href="#[7d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;rtc_second_to_time
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[0]"></a>Reset_Handler</STRONG> (Thumb, 36 bytes, Stack size 0 bytes, startup_mk800x.o(.text.Reset_Handler))
<BR><BR>[Calls]<UL><LI><a href="#[7e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;update_libc_rom_table
<LI><a href="#[80]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;start_main_asm
<LI><a href="#[7f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemInit
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[9]"></a>SLEEP_TIMER_IRQHandler</STRONG> (Thumb, 164 bytes, Stack size 8 bytes, mk_sleep_timer.o(.text.SLEEP_TIMER_IRQHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 308<LI>Call Chain = SLEEP_TIMER_IRQHandler &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[5]"></a>SysTick_Handler</STRONG> (Thumb, 24 bytes, Stack size 8 bytes, mk_misc.o(.text.SysTick_Handler))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = SysTick_Handler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[7f]"></a>SystemInit</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, system_mk800x.o(.text.SystemInit))
<BR><BR>[Called By]<UL><LI><a href="#[0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Reset_Handler
</UL>
<P><STRONG><a name="[19]"></a>TIMER2_IRQHandler</STRONG> (Thumb, 32 bytes, Stack size 16 bytes, mk_dual_timer.o(.text.TIMER2_IRQHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = TIMER2_IRQHandler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[1a]"></a>TIMER3_IRQHandler</STRONG> (Thumb, 36 bytes, Stack size 16 bytes, mk_dual_timer.o(.text.TIMER3_IRQHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = TIMER3_IRQHandler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[1e]"></a>UART0_IRQHandler</STRONG> (Thumb, 10 bytes, Stack size 8 bytes, mk_uart.o(.text.UART0_IRQHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 348<LI>Call Chain = UART0_IRQHandler &rArr; uart_irq_handler &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[81]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uart_irq_handler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[1f]"></a>UART1_IRQHandler</STRONG> (Thumb, 10 bytes, Stack size 8 bytes, mk_uart.o(.text.UART1_IRQHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 348<LI>Call Chain = UART1_IRQHandler &rArr; uart_irq_handler &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[81]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uart_irq_handler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[82]"></a>UART_CheckReceive</STRONG> (Thumb, 140 bytes, Stack size 24 bytes, usart.o(.text.UART_CheckReceive))
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = UART_CheckReceive
</UL>
<BR>[Calls]<UL><LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;get_uart1_dma_cndtr
</UL>
<BR>[Called By]<UL><LI><a href="#[24]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[27]"></a>UsartParseDataHandler</STRONG> (Thumb, 444 bytes, Stack size 24 bytes, serial_at_cmd_app.o(.text.UsartParseDataHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 812<LI>Call Chain = UsartParseDataHandler &rArr; save_com_map_to_flash &rArr; flash_open &rArr; trace_printf &rArr; trace_output &rArr;  trace_printf (Cycle)
</UL>
<BR>[Calls]<UL><LI><a href="#[85]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;save_com_map_to_flash
<LI><a href="#[86]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uart_send
<LI><a href="#[84]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memcpy
</UL>
<BR>[Address Reference Count : 1]<UL><LI> main.o(.text.main)
</UL>
<P><STRONG><a name="[13]"></a>WDT_IRQHandler</STRONG> (Thumb, 32 bytes, Stack size 16 bytes, mk_wdt.o(.text.WDT_IRQHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = WDT_IRQHandler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_mk800x.o(RESET)
</UL>
<P><STRONG><a name="[87]"></a>WsfNvmInit</STRONG> (Thumb, 196 bytes, Stack size 32 bytes, wsf_nvm.o(.text.WsfNvmInit))
<BR><BR>[Stack]<UL><LI>Max Depth = 804<LI>Call Chain = WsfNvmInit &rArr; PalFlashInit &rArr; flash_open &rArr; trace_printf &rArr; trace_output &rArr;  trace_printf (Cycle)
</UL>
<BR>[Calls]<UL><LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;crc16
<LI><a href="#[88]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;PalNvmGetTotalSize
<LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;PalNvmGetSectorSize
<LI><a href="#[77]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;PalFlashRead
<LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;PalFlashInit
<LI><a href="#[73]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;PalFlashEraseSector
</UL>
<BR>[Called By]<UL><LI><a href="#[24]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[8d]"></a>aes_open</STRONG> (Thumb, 152 bytes, Stack size 16 bytes, mk_aes.o(.text.aes_open))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = aes_open
</UL>
<BR>[Calls]<UL><LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;reset_module
<LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;clock_enable
<LI><a href="#[84]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memcpy
</UL>
<BR>[Called By]<UL><LI><a href="#[d8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_open
</UL>
<P><STRONG><a name="[cb]"></a>aoa_param_dynamic_port_sel</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, lib_aoa.o(.text.aoa_param_dynamic_port_sel))
<BR><BR>[Called By]<UL><LI><a href="#[ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_adv_params_configure
</UL>
<P><STRONG><a name="[c0]"></a>board_calibration_params_default</STRONG> (Thumb, 48 bytes, Stack size 0 bytes, board.o(.text.board_calibration_params_default))
<BR><BR>[Called By]<UL><LI><a href="#[24]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[c1]"></a>board_calibration_params_load</STRONG> (Thumb, 52 bytes, Stack size 0 bytes, board.o(.text.board_calibration_params_load))
<BR><BR>[Called By]<UL><LI><a href="#[24]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[90]"></a>board_clock_run</STRONG> (Thumb, 100 bytes, Stack size 16 bytes, board.o(.text.board_clock_run))
<BR><BR>[Stack]<UL><LI>Max Depth = 380<LI>Call Chain = board_clock_run &rArr; sys_timer_open &rArr; dual_timer_open &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;clock_set_divider
<LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;clock_attach
<LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;calib_start
<LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;calib_open
<LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;calib_close
<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;calib_check
<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;sys_timer_open
<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;sys_tick_start
</UL>
<BR>[Called By]<UL><LI><a href="#[24]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[9a]"></a>board_debug_console_open</STRONG> (Thumb, 96 bytes, Stack size 8 bytes, board.o(.text.board_debug_console_open))
<BR><BR>[Stack]<UL><LI>Max Depth = 748<LI>Call Chain = board_debug_console_open &rArr; trace_printf &rArr; trace_output &rArr;  trace_printf (Cycle)
</UL>
<BR>[Calls]<UL><LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_printf
<LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_open
</UL>
<BR>[Called By]<UL><LI><a href="#[24]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[9c]"></a>board_led_init</STRONG> (Thumb, 28 bytes, Stack size 16 bytes, board.o(.text.board_led_init))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = board_led_init
</UL>
<BR>[Calls]<UL><LI><a href="#[9d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gpio_pin_set_dir
</UL>
<BR>[Called By]<UL><LI><a href="#[24]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[9e]"></a>board_pins_config</STRONG> (Thumb, 38 bytes, Stack size 8 bytes, pin_config.o(.text.board_pins_config))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = board_pins_config
</UL>
<BR>[Calls]<UL><LI><a href="#[9f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;io_pin_mux_set
</UL>
<BR>[Called By]<UL><LI><a href="#[24]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[95]"></a>calib_check</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, mk_calib.o(.text.calib_check))
<BR><BR>[Called By]<UL><LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;board_clock_run
</UL>
<P><STRONG><a name="[a0]"></a>calib_chip</STRONG> (Thumb, 428 bytes, Stack size 16 bytes, mk_calib.o(.text.calib_chip))
<BR><BR>[Stack]<UL><LI>Max Depth = 756<LI>Call Chain = calib_chip &rArr; trace_printf &rArr; trace_output &rArr;  trace_printf (Cycle)
</UL>
<BR>[Calls]<UL><LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_printf
<LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;clock_enable
<LI><a href="#[a1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mk_chip_id
</UL>
<BR>[Called By]<UL><LI><a href="#[24]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[96]"></a>calib_close</STRONG> (Thumb, 12 bytes, Stack size 8 bytes, mk_calib.o(.text.calib_close))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = calib_close
</UL>
<BR>[Calls]<UL><LI><a href="#[7c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;clock_disable
</UL>
<BR>[Called By]<UL><LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;board_clock_run
</UL>
<P><STRONG><a name="[93]"></a>calib_open</STRONG> (Thumb, 20 bytes, Stack size 8 bytes, mk_calib.o(.text.calib_open))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = calib_open
</UL>
<BR>[Calls]<UL><LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;reset_module
<LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;clock_enable
</UL>
<BR>[Called By]<UL><LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;board_clock_run
</UL>
<P><STRONG><a name="[94]"></a>calib_start</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, mk_calib.o(.text.calib_start))
<BR><BR>[Called By]<UL><LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;board_clock_run
</UL>
<P><STRONG><a name="[91]"></a>clock_attach</STRONG> (Thumb, 236 bytes, Stack size 8 bytes, mk_clock.o(.text.clock_attach))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = clock_attach
</UL>
<BR>[Called By]<UL><LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;board_clock_run
</UL>
<P><STRONG><a name="[7c]"></a>clock_disable</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, mk_clock.o(.text.clock_disable))
<BR><BR>[Called By]<UL><LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;calib_close
<LI><a href="#[21]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;RCO32K_CAL_IRQHandler
<LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_close
<LI><a href="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;wdt_close
</UL>
<P><STRONG><a name="[8e]"></a>clock_enable</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, mk_clock.o(.text.clock_enable))
<BR><BR>[Called By]<UL><LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;dma_open
<LI><a href="#[a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;dual_timer_open
<LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;calib_open
<LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;calib_chip
<LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;aes_open
<LI><a href="#[ac]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gpio_open
<LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_open
<LI><a href="#[b4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_init
<LI><a href="#[b1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_open
<LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uart_open
</UL>
<P><STRONG><a name="[79]"></a>clock_get_frequency</STRONG> (Thumb, 232 bytes, Stack size 8 bytes, mk_clock.o(.text.clock_get_frequency))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = clock_get_frequency
</UL>
<BR>[Called By]<UL><LI><a href="#[21]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;RCO32K_CAL_IRQHandler
<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;sys_timer_open
</UL>
<P><STRONG><a name="[97]"></a>clock_set_divider</STRONG> (Thumb, 100 bytes, Stack size 0 bytes, mk_clock.o(.text.clock_set_divider))
<BR><BR>[Called By]<UL><LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_open
<LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;board_clock_run
<LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uart_open
</UL>
<P><STRONG><a name="[8a]"></a>crc16</STRONG> (Thumb, 44 bytes, Stack size 16 bytes, crc.o(.text.crc16))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = crc16
</UL>
<BR>[Called By]<UL><LI><a href="#[87]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WsfNvmInit
</UL>
<P><STRONG><a name="[92]"></a>delay_us</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, mk_misc.o(.text.delay_us))
<BR><BR>[Called By]<UL><LI><a href="#[ab]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_write_nbytes
<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_sector_erase
<LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_open
<LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_close
<LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_block_erase
<LI><a href="#[aa]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_write_quad_mode
<LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_dma_write_nbytes_callback
<LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;board_clock_run
<LI><a href="#[da]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_configure
<LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uart_open
</UL>
<P><STRONG><a name="[5b]"></a>derive_scaled_thres</STRONG> (Thumb, 196 bytes, Stack size 32 bytes, mk8000_all_antenna_fap.o(.text.derive_scaled_thres))
<BR><BR>[Stack]<UL><LI>Max Depth = 68<LI>Call Chain = derive_scaled_thres &rArr; __aeabi_fadd &rArr; _float_epilogue
</UL>
<BR>[Calls]<UL><LI><a href="#[6a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fmul
<LI><a href="#[35]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fadd
<LI><a href="#[62]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fcmpge
<LI><a href="#[40]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_ui2f
</UL>
<BR>[Called By]<UL><LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_all_antenna_FAP
</UL>
<P><STRONG><a name="[a2]"></a>dma_open</STRONG> (Thumb, 224 bytes, Stack size 24 bytes, mk_dma.o(.text.dma_open))
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = dma_open
</UL>
<BR>[Calls]<UL><LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;reset_module
<LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;clock_enable
</UL>
<BR>[Called By]<UL><LI><a href="#[ab]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_write_nbytes
<LI><a href="#[78]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_read
<LI><a href="#[c5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uart_receive
<LI><a href="#[86]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uart_send
</UL>
<P><STRONG><a name="[a3]"></a>dma_transfer</STRONG> (Thumb, 168 bytes, Stack size 24 bytes, mk_dma.o(.text.dma_transfer))
<BR><BR>[Stack]<UL><LI>Max Depth = 324<LI>Call Chain = dma_transfer &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
</UL>
<BR>[Called By]<UL><LI><a href="#[ab]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_write_nbytes
<LI><a href="#[78]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_read
<LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_dma_write_nbytes_callback
<LI><a href="#[25]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_dma_callback
<LI><a href="#[c5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uart_receive
<LI><a href="#[86]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uart_send
</UL>
<P><STRONG><a name="[de]"></a>dual_timer_get</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, mk_dual_timer.o(.text.dual_timer_get))
<BR><BR>[Called By]<UL><LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;sys_timer_get
</UL>
<P><STRONG><a name="[a4]"></a>dual_timer_open</STRONG> (Thumb, 308 bytes, Stack size 24 bytes, mk_dual_timer.o(.text.dual_timer_open))
<BR><BR>[Stack]<UL><LI>Max Depth = 324<LI>Call Chain = dual_timer_open &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
<LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;clock_enable
</UL>
<BR>[Called By]<UL><LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;sys_timer_open
</UL>
<P><STRONG><a name="[df]"></a>dual_timer_start</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, mk_dual_timer.o(.text.dual_timer_start))
<BR><BR>[Called By]<UL><LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;sys_timer_open
</UL>
<P><STRONG><a name="[ba]"></a>dual_timer_stop</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, mk_dual_timer.o(.text.dual_timer_stop))
<BR><BR>[Called By]<UL><LI><a href="#[55]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_timer_stop
</UL>
<P><STRONG><a name="[5c]"></a>enhanced_sts_fap_detect</STRONG> (Thumb, 434 bytes, Stack size 72 bytes, mk8000_sts_fap_detect.o(.text.enhanced_sts_fap_detect))
<BR><BR>[Stack]<UL><LI>Max Depth = 108<LI>Call Chain = enhanced_sts_fap_detect &rArr; __aeabi_fadd &rArr; _float_epilogue
</UL>
<BR>[Calls]<UL><LI><a href="#[6a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fmul
<LI><a href="#[35]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fadd
<LI><a href="#[62]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fcmpge
<LI><a href="#[5d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fcmplt
<LI><a href="#[5a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fcmple
</UL>
<BR>[Called By]<UL><LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_sts_FAP_detect
<LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_all_antenna_FAP
</UL>
<P><STRONG><a name="[54]"></a>exit_debug_mode</STRONG> (Thumb, 44 bytes, Stack size 0 bytes, mk_phy.o(.text.exit_debug_mode))
<BR><BR>[Called By]<UL><LI><a href="#[a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MAC_IRQHandler
</UL>
<P><STRONG><a name="[52]"></a>fira_vendor_oui_process</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, mk_mac.o(.text.fira_vendor_oui_process))
<BR><BR>[Called By]<UL><LI><a href="#[a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MAC_IRQHandler
</UL>
<P><STRONG><a name="[a5]"></a>flash_block_erase</STRONG> (Thumb, 468 bytes, Stack size 40 bytes, mk_flash.o(.text.flash_block_erase))
<BR><BR>[Stack]<UL><LI>Max Depth = 340<LI>Call Chain = flash_block_erase &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
<LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
<LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;sys_timer_get
<LI><a href="#[a6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_write_cmd
<LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidiv
</UL>
<BR>[Called By]<UL><LI><a href="#[a9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_erase
</UL>
<P><STRONG><a name="[a7]"></a>flash_check_busy</STRONG> (Thumb, 224 bytes, Stack size 32 bytes, mk_flash.o(.text.flash_check_busy))
<BR><BR>[Stack]<UL><LI>Max Depth = 80<LI>Call Chain = flash_check_busy &rArr; flash_write_cmd &rArr; sys_timer_get
</UL>
<BR>[Calls]<UL><LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;sys_timer_get
<LI><a href="#[a6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_write_cmd
</UL>
<BR>[Called By]<UL><LI><a href="#[a9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_erase
</UL>
<P><STRONG><a name="[a8]"></a>flash_close</STRONG> (Thumb, 56 bytes, Stack size 16 bytes, mk_flash.o(.text.flash_close))
<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = flash_close &rArr; flash_write_cmd &rArr; sys_timer_get
</UL>
<BR>[Calls]<UL><LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
<LI><a href="#[7c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;clock_disable
<LI><a href="#[a6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_write_cmd
</UL>
<BR>[Called By]<UL><LI><a href="#[24]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[a9]"></a>flash_erase</STRONG> (Thumb, 328 bytes, Stack size 48 bytes, mk_flash.o(.text.flash_erase))
<BR><BR>[Stack]<UL><LI>Max Depth = 388<LI>Call Chain = flash_erase &rArr; flash_sector_erase &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_sector_erase
<LI><a href="#[a7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_check_busy
<LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_block_erase
<LI><a href="#[31]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
<LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidiv
</UL>
<BR>[Called By]<UL><LI><a href="#[c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parameter_init_anchor
<LI><a href="#[85]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;save_com_map_to_flash
</UL>
<P><STRONG><a name="[76]"></a>flash_open</STRONG> (Thumb, 540 bytes, Stack size 24 bytes, mk_flash.o(.text.flash_open))
<BR><BR>[Stack]<UL><LI>Max Depth = 764<LI>Call Chain = flash_open &rArr; trace_printf &rArr; trace_output &rArr;  trace_printf (Cycle)
</UL>
<BR>[Calls]<UL><LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_printf
<LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;reset_module
<LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
<LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;clock_enable
<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;clock_set_divider
<LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;sys_timer_get
<LI><a href="#[aa]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_write_quad_mode
<LI><a href="#[a6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_write_cmd
</UL>
<BR>[Called By]<UL><LI><a href="#[c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parameter_init_anchor
<LI><a href="#[85]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;save_com_map_to_flash
<LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;PalFlashInit
</UL>
<P><STRONG><a name="[78]"></a>flash_read</STRONG> (Thumb, 688 bytes, Stack size 96 bytes, mk_flash.o(.text.flash_read))
<BR><BR>[Stack]<UL><LI>Max Depth = 420<LI>Call Chain = flash_read &rArr; dma_transfer &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
<LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;dma_transfer
<LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;dma_open
<LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;sys_timer_get
<LI><a href="#[a6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_write_cmd
<LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidiv
</UL>
<BR>[Called By]<UL><LI><a href="#[c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parameter_init_anchor
<LI><a href="#[77]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;PalFlashRead
</UL>
<P><STRONG><a name="[74]"></a>flash_sector_erase</STRONG> (Thumb, 472 bytes, Stack size 40 bytes, mk_flash.o(.text.flash_sector_erase))
<BR><BR>[Stack]<UL><LI>Max Depth = 340<LI>Call Chain = flash_sector_erase &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
<LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
<LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;sys_timer_get
<LI><a href="#[a6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_write_cmd
<LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidiv
</UL>
<BR>[Called By]<UL><LI><a href="#[a9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_erase
<LI><a href="#[73]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;PalFlashEraseSector
</UL>
<P><STRONG><a name="[ab]"></a>flash_write_nbytes</STRONG> (Thumb, 2448 bytes, Stack size 128 bytes, mk_flash.o(.text.flash_write_nbytes))
<BR><BR>[Stack]<UL><LI>Max Depth = 452<LI>Call Chain = flash_write_nbytes &rArr; dma_transfer &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;dma_transfer
<LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;dma_open
<LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
<LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;sys_timer_get
<LI><a href="#[a6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_write_cmd
<LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidiv
</UL>
<BR>[Called By]<UL><LI><a href="#[c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parameter_init_anchor
<LI><a href="#[85]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;save_com_map_to_flash
</UL>
<P><STRONG><a name="[83]"></a>get_uart1_dma_cndtr</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, mk_dma.o(.text.get_uart1_dma_cndtr))
<BR><BR>[Called By]<UL><LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_CheckReceive
</UL>
<P><STRONG><a name="[ac]"></a>gpio_open</STRONG> (Thumb, 20 bytes, Stack size 8 bytes, mk_gpio.o(.text.gpio_open))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = gpio_open
</UL>
<BR>[Calls]<UL><LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;reset_module
<LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;clock_enable
</UL>
<BR>[Called By]<UL><LI><a href="#[24]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[9d]"></a>gpio_pin_set_dir</STRONG> (Thumb, 76 bytes, Stack size 0 bytes, mk_gpio.o(.text.gpio_pin_set_dir))
<BR><BR>[Called By]<UL><LI><a href="#[9c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;board_led_init
</UL>
<P><STRONG><a name="[9f]"></a>io_pin_mux_set</STRONG> (Thumb, 80 bytes, Stack size 0 bytes, mk_io.o(.text.io_pin_mux_set))
<BR><BR>[Called By]<UL><LI><a href="#[9e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;board_pins_config
</UL>
<P><STRONG><a name="[60]"></a>lsp_cmplx_inner_product_f32</STRONG> (Thumb, 28 bytes, Stack size 16 bytes, mk_lsp.o(.text.lsp_cmplx_inner_product_f32))
<BR><BR>[Stack]<UL><LI>Max Depth = 396<LI>Call Chain = lsp_cmplx_inner_product_f32 &rArr; lsp_g_op_f32 &rArr; lsp_engine_run &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[ad]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_g_op_f32
</UL>
<BR>[Called By]<UL><LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_sts_FAP_detect
<LI><a href="#[5f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_blender_packet
</UL>
<P><STRONG><a name="[6c]"></a>lsp_cmplx_mult_cmplx_int8</STRONG> (Thumb, 32 bytes, Stack size 32 bytes, mk_lsp.o(.text.lsp_cmplx_mult_cmplx_int8))
<BR><BR>[Stack]<UL><LI>Max Depth = 412<LI>Call Chain = lsp_cmplx_mult_cmplx_int8 &rArr; lsp_g_op_int8 &rArr; lsp_engine_run &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[ae]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_g_op_int8
</UL>
<BR>[Called By]<UL><LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_preamble_FAP_LSP
</UL>
<P><STRONG><a name="[66]"></a>lsp_inner_product_f32</STRONG> (Thumb, 28 bytes, Stack size 16 bytes, mk_lsp.o(.text.lsp_inner_product_f32))
<BR><BR>[Stack]<UL><LI>Max Depth = 396<LI>Call Chain = lsp_inner_product_f32 &rArr; lsp_g_op_f32 &rArr; lsp_engine_run &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[ad]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_g_op_f32
</UL>
<BR>[Called By]<UL><LI><a href="#[67]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_fap_adjust_FLT
<LI><a href="#[69]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_fap_adjust_simple
<LI><a href="#[63]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_fap_adjust
<LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_sts_FAP_detect
</UL>
<P><STRONG><a name="[6d]"></a>lsp_inner_product_int16</STRONG> (Thumb, 30 bytes, Stack size 24 bytes, mk_lsp.o(.text.lsp_inner_product_int16))
<BR><BR>[Stack]<UL><LI>Max Depth = 412<LI>Call Chain = lsp_inner_product_int16 &rArr; lsp_g_op_int16 &rArr; lsp_engine_run &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_g_op_int16
</UL>
<BR>[Called By]<UL><LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_preamble_FAP_LSP
</UL>
<P><STRONG><a name="[b1]"></a>lsp_open</STRONG> (Thumb, 68 bytes, Stack size 16 bytes, mk_lsp.o(.text.lsp_open))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = lsp_open
</UL>
<BR>[Calls]<UL><LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;reset_module
<LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;clock_enable
</UL>
<BR>[Called By]<UL><LI><a href="#[d8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_open
</UL>
<P><STRONG><a name="[65]"></a>lsp_scale_f32</STRONG> (Thumb, 80 bytes, Stack size 24 bytes, mk_lsp.o(.text.lsp_scale_f32))
<BR><BR>[Stack]<UL><LI>Max Depth = 404<LI>Call Chain = lsp_scale_f32 &rArr; lsp_g_op_f32 &rArr; lsp_engine_run &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
<LI><a href="#[ad]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_g_op_f32
</UL>
<BR>[Called By]<UL><LI><a href="#[67]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_fap_adjust_FLT
<LI><a href="#[69]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_fap_adjust_simple
<LI><a href="#[63]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_fap_adjust
<LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_sts_FAP_detect
</UL>
<P><STRONG><a name="[64]"></a>lsp_vinverse_f32</STRONG> (Thumb, 26 bytes, Stack size 16 bytes, mk_lsp.o(.text.lsp_vinverse_f32))
<BR><BR>[Stack]<UL><LI>Max Depth = 396<LI>Call Chain = lsp_vinverse_f32 &rArr; lsp_g_op_f32 &rArr; lsp_engine_run &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[ad]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_g_op_f32
</UL>
<BR>[Called By]<UL><LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_preamble_FAP_LSP
<LI><a href="#[67]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_fap_adjust_FLT
<LI><a href="#[69]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_fap_adjust_simple
<LI><a href="#[63]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_fap_adjust
</UL>
<P><STRONG><a name="[ee]"></a>mac_crc_mode_configure</STRONG> (Thumb, 36 bytes, Stack size 0 bytes, mk_mac.o(.text.mac_crc_mode_configure))
<BR><BR>[Called By]<UL><LI><a href="#[da]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_configure
</UL>
<P><STRONG><a name="[b2]"></a>mac_cs_construct</STRONG> (Thumb, 192 bytes, Stack size 32 bytes, mk_mac.o(.text.mac_cs_construct))
<BR><BR>[Stack]<UL><LI>Max Depth = 332<LI>Call Chain = mac_cs_construct &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
<LI><a href="#[4b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_timer_count_get
<LI><a href="#[b3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_crypto_sts_index_get
</UL>
<BR>[Called By]<UL><LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_tx
<LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_rx
</UL>
<P><STRONG><a name="[b4]"></a>mac_init</STRONG> (Thumb, 148 bytes, Stack size 24 bytes, mk_mac.o(.text.mac_init))
<BR><BR>[Stack]<UL><LI>Max Depth = 324<LI>Call Chain = mac_init &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
<LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;reset_module
<LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;clock_enable
<LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_regs_init
<LI><a href="#[b5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr8
</UL>
<BR>[Called By]<UL><LI><a href="#[d8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_open
</UL>
<P><STRONG><a name="[50]"></a>mac_is_busy</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, mk_mac.o(.text.mac_is_busy))
<BR><BR>[Called By]<UL><LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;simple_main
<LI><a href="#[4a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Anchor_RecNearPoll
</UL>
<P><STRONG><a name="[b7]"></a>mac_link_desc_construct</STRONG> (Thumb, 176 bytes, Stack size 32 bytes, mk_mac.o(.text.mac_link_desc_construct))
<BR><BR>[Stack]<UL><LI>Max Depth = 332<LI>Call Chain = mac_link_desc_construct &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
</UL>
<BR>[Called By]<UL><LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_tx
<LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_rx
</UL>
<P><STRONG><a name="[dc]"></a>mac_register_process_handler</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, mk_mac.o(.text.mac_register_process_handler))
<BR><BR>[Called By]<UL><LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;simple_main
</UL>
<P><STRONG><a name="[b6]"></a>mac_regs_init</STRONG> (Thumb, 276 bytes, Stack size 24 bytes, mk_mac.o(.text.mac_regs_init))
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = mac_regs_init
</UL>
<BR>[Calls]<UL><LI><a href="#[b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_cca_config
</UL>
<BR>[Called By]<UL><LI><a href="#[b4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_init
</UL>
<P><STRONG><a name="[ef]"></a>mac_rssi_calculation_en</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, mk_mac.o(.text.mac_rssi_calculation_en))
<BR><BR>[Called By]<UL><LI><a href="#[d8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_open
</UL>
<P><STRONG><a name="[b9]"></a>mac_rx</STRONG> (Thumb, 384 bytes, Stack size 64 bytes, mk_mac.o(.text.mac_rx))
<BR><BR>[Stack]<UL><LI>Max Depth = 396<LI>Call Chain = mac_rx &rArr; mac_link_desc_construct &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_link_desc_construct
<LI><a href="#[b2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_cs_construct
</UL>
<BR>[Called By]<UL><LI><a href="#[dd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_rx
</UL>
<P><STRONG><a name="[f2]"></a>mac_start</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, mk_mac.o(.text.mac_start))
<BR><BR>[Called By]<UL><LI><a href="#[4f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_tx
<LI><a href="#[dd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_rx
</UL>
<P><STRONG><a name="[55]"></a>mac_timer_stop</STRONG> (Thumb, 10 bytes, Stack size 8 bytes, mk_misc.o(.text.mac_timer_stop))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = mac_timer_stop
</UL>
<BR>[Calls]<UL><LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;dual_timer_stop
</UL>
<BR>[Called By]<UL><LI><a href="#[a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MAC_IRQHandler
</UL>
<P><STRONG><a name="[bb]"></a>mac_tx</STRONG> (Thumb, 332 bytes, Stack size 48 bytes, mk_mac.o(.text.mac_tx))
<BR><BR>[Stack]<UL><LI>Max Depth = 404<LI>Call Chain = mac_tx &rArr; mac_tx_desc_construct &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_link_desc_construct
<LI><a href="#[b2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_cs_construct
<LI><a href="#[bc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_tx_desc_construct
</UL>
<BR>[Called By]<UL><LI><a href="#[4f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_tx
</UL>
<P><STRONG><a name="[bc]"></a>mac_tx_desc_construct</STRONG> (Thumb, 328 bytes, Stack size 56 bytes, mk_mac.o(.text.mac_tx_desc_construct))
<BR><BR>[Stack]<UL><LI>Max Depth = 356<LI>Call Chain = mac_tx_desc_construct &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
<LI><a href="#[bd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_en_conv_encode
<LI><a href="#[84]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memcpy
<LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidiv
</UL>
<BR>[Called By]<UL><LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_tx
</UL>
<P><STRONG><a name="[24]"></a>main</STRONG> (Thumb, 256 bytes, Stack size 32 bytes, main.o(.text.main))
<BR><BR>[Stack]<UL><LI>Max Depth = 1044<LI>Call Chain = main &rArr; simple_main &rArr; uwb_configure &rArr; phy_params_generate &rArr; trace_printf &rArr; trace_output &rArr;  trace_printf (Cycle)
</UL>
<BR>[Calls]<UL><LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_printf
<LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;calib_chip
<LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;reset_cause_get
<LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;reset_cause_clear
<LI><a href="#[ac]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gpio_open
<LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_close
<LI><a href="#[9e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;board_pins_config
<LI><a href="#[9c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;board_led_init
<LI><a href="#[9a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;board_debug_console_open
<LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;board_clock_run
<LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;board_calibration_params_load
<LI><a href="#[c0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;board_calibration_params_default
<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_CheckReceive
<LI><a href="#[c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parameter_init_anchor
<LI><a href="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;wdt_close
<LI><a href="#[c5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uart_receive
<LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uart_open
<LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;simple_main
<LI><a href="#[87]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;WsfNvmInit
<LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidiv
</UL>
<BR>[Address Reference Count : 1]<UL><LI> entry9a.o(.ARM.Collect$$$$0000000B)
</UL>
<P><STRONG><a name="[a1]"></a>mk_chip_id</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, mk_misc.o(.text.mk_chip_id))
<BR><BR>[Called By]<UL><LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;calib_chip
</UL>
<P><STRONG><a name="[c7]"></a>mk_snprintf</STRONG> (Thumb, 26 bytes, Stack size 16 bytes, mk_trace.o(.text.mk_snprintf))
<BR><BR>[Stack]<UL><LI>Max Depth = 188<LI>Call Chain = mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_format
</UL>
<BR>[Called By]<UL><LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_printf
<LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
<LI><a href="#[51]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_exception_handler
<LI><a href="#[e3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_print_backtrace
</UL>
<P><STRONG><a name="[c4]"></a>parameter_init_anchor</STRONG> (Thumb, 180 bytes, Stack size 24 bytes, global_param.o(.text.parameter_init_anchor))
<BR><BR>[Stack]<UL><LI>Max Depth = 788<LI>Call Chain = parameter_init_anchor &rArr; flash_open &rArr; trace_printf &rArr; trace_output &rArr;  trace_printf (Cycle)
</UL>
<BR>[Calls]<UL><LI><a href="#[ab]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_write_nbytes
<LI><a href="#[78]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_read
<LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_open
<LI><a href="#[a9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_erase
</UL>
<BR>[Called By]<UL><LI><a href="#[24]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[eb]"></a>pdoa_angle_offset_set</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, mk_uwb.o(.text.pdoa_angle_offset_set))
<BR><BR>[Called By]<UL><LI><a href="#[d9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_calibration_params_set
</UL>
<P><STRONG><a name="[c9]"></a>pdoa_ant_delays_set</STRONG> (Thumb, 32 bytes, Stack size 8 bytes, mk8000_get_loc_params.o(.text.pdoa_ant_delays_set))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = pdoa_ant_delays_set
</UL>
<BR>[Calls]<UL><LI><a href="#[84]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memcpy
</UL>
<BR>[Called By]<UL><LI><a href="#[d9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_calibration_params_set
</UL>
<P><STRONG><a name="[ea]"></a>pdoa_ant_space_set</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, mk8000_get_loc_params.o(.text.pdoa_ant_space_set))
<BR><BR>[Called By]<UL><LI><a href="#[d9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_calibration_params_set
</UL>
<P><STRONG><a name="[e9]"></a>pdoa_gain_set</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, mk_uwb.o(.text.pdoa_gain_set))
<BR><BR>[Called By]<UL><LI><a href="#[d9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_calibration_params_set
</UL>
<P><STRONG><a name="[ca]"></a>phy_adv_params_configure</STRONG> (Thumb, 32 bytes, Stack size 8 bytes, mk_phy.o(.text.phy_adv_params_configure))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = phy_adv_params_configure
</UL>
<BR>[Calls]<UL><LI><a href="#[cb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;aoa_param_dynamic_port_sel
</UL>
<BR>[Called By]<UL><LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;simple_main
</UL>
<P><STRONG><a name="[b8]"></a>phy_cca_config</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, mk_phy.o(.text.phy_cca_config))
<BR><BR>[Called By]<UL><LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_regs_init
</UL>
<P><STRONG><a name="[b3]"></a>phy_crypto_sts_index_get</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, mk_phy.o(.text.phy_crypto_sts_index_get))
<BR><BR>[Called By]<UL><LI><a href="#[b2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_cs_construct
</UL>
<P><STRONG><a name="[53]"></a>phy_dump_mode</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, mk_phy.o(.text.phy_dump_mode))
<BR><BR>[Called By]<UL><LI><a href="#[a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MAC_IRQHandler
</UL>
<P><STRONG><a name="[bd]"></a>phy_en_conv_encode</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, mk_phy.o(.text.phy_en_conv_encode))
<BR><BR>[Called By]<UL><LI><a href="#[bc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_tx_desc_construct
</UL>
<P><STRONG><a name="[f0]"></a>phy_init</STRONG> (Thumb, 44 bytes, Stack size 0 bytes, mk_phy.o(.text.phy_init))
<BR><BR>[Called By]<UL><LI><a href="#[d8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_open
</UL>
<P><STRONG><a name="[cc]"></a>phy_params_generate</STRONG> (Thumb, 2288 bytes, Stack size 184 bytes, mk_phy.o(.text.phy_params_generate))
<BR><BR>[Stack]<UL><LI>Max Depth = 924<LI>Call Chain = phy_params_generate &rArr; trace_printf &rArr; trace_output &rArr;  trace_printf (Cycle)
</UL>
<BR>[Calls]<UL><LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_printf
<LI><a href="#[ce]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_f2d
<LI><a href="#[3b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_dmul
<LI><a href="#[42]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_d2iz
<LI><a href="#[cf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_sts_related_params_update
<LI><a href="#[41]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_ui2d
<LI><a href="#[32]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr
<LI><a href="#[d0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memset4
<LI><a href="#[cd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memcpy4
<LI><a href="#[84]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memcpy
<LI><a href="#[3d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_ddiv
</UL>
<BR>[Called By]<UL><LI><a href="#[da]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_configure
</UL>
<P><STRONG><a name="[ec]"></a>phy_params_sets_enable</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, mk_phy.o(.text.phy_params_sets_enable))
<BR><BR>[Called By]<UL><LI><a href="#[da]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_configure
</UL>
<P><STRONG><a name="[ed]"></a>phy_rx_regs_config</STRONG> (Thumb, 1456 bytes, Stack size 44 bytes, mk_phy.o(.text.phy_rx_regs_config))
<BR><BR>[Stack]<UL><LI>Max Depth = 44<LI>Call Chain = phy_rx_regs_config
</UL>
<BR>[Called By]<UL><LI><a href="#[da]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_configure
</UL>
<P><STRONG><a name="[4c]"></a>phy_shr_duration</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, mk_phy.o(.text.phy_shr_duration))
<BR><BR>[Called By]<UL><LI><a href="#[4a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Anchor_RecNearPoll
<LI><a href="#[2a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;rx_int_callback
</UL>
<P><STRONG><a name="[4b]"></a>phy_timer_count_get</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, mk_phy.o(.text.phy_timer_count_get))
<BR><BR>[Called By]<UL><LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;simple_main
<LI><a href="#[4a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Anchor_RecNearPoll
<LI><a href="#[29]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;tx_int_callback
<LI><a href="#[2a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;rx_int_callback
<LI><a href="#[b2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_cs_construct
</UL>
<P><STRONG><a name="[f1]"></a>phy_timer_open</STRONG> (Thumb, 68 bytes, Stack size 8 bytes, mk_phy.o(.text.phy_timer_open))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = phy_timer_open
</UL>
<BR>[Called By]<UL><LI><a href="#[d8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_open
</UL>
<P><STRONG><a name="[d1]"></a>phy_tx_regs_config</STRONG> (Thumb, 780 bytes, Stack size 88 bytes, mk_phy.o(.text.phy_tx_regs_config))
<BR><BR>[Stack]<UL><LI>Max Depth = 828<LI>Call Chain = phy_tx_regs_config &rArr; trace_printf &rArr; trace_output &rArr;  trace_printf (Cycle)
</UL>
<BR>[Calls]<UL><LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_printf
</UL>
<BR>[Called By]<UL><LI><a href="#[da]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_configure
</UL>
<P><STRONG><a name="[d4]"></a>power_fem_rx_ctrl</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, mk_power.o(.text.power_fem_rx_ctrl))
<BR><BR>[Called By]<UL><LI><a href="#[d5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;power_on_radio
<LI><a href="#[d2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;power_off_radio
</UL>
<P><STRONG><a name="[d3]"></a>power_fem_tx_ctrl</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, mk_power.o(.text.power_fem_tx_ctrl))
<BR><BR>[Called By]<UL><LI><a href="#[d5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;power_on_radio
<LI><a href="#[d2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;power_off_radio
</UL>
<P><STRONG><a name="[d2]"></a>power_off_radio</STRONG> (Thumb, 92 bytes, Stack size 16 bytes, mk_power.o(.text.power_off_radio))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = power_off_radio
</UL>
<BR>[Calls]<UL><LI><a href="#[d3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;power_fem_tx_ctrl
<LI><a href="#[d4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;power_fem_rx_ctrl
</UL>
<BR>[Called By]<UL><LI><a href="#[29]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;tx_int_callback
<LI><a href="#[2a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;rx_int_callback
</UL>
<P><STRONG><a name="[d5]"></a>power_on_radio</STRONG> (Thumb, 104 bytes, Stack size 16 bytes, mk_power.o(.text.power_on_radio))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = power_on_radio
</UL>
<BR>[Calls]<UL><LI><a href="#[d3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;power_fem_tx_ctrl
<LI><a href="#[d4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;power_fem_rx_ctrl
</UL>
<BR>[Called By]<UL><LI><a href="#[4f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_tx
<LI><a href="#[dd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_rx
</UL>
<P><STRONG><a name="[4e]"></a>ranging_ant_delays_get</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, lib_ranging.o(.text.ranging_ant_delays_get))
<BR><BR>[Called By]<UL><LI><a href="#[4a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Anchor_RecNearPoll
<LI><a href="#[2a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;rx_int_callback
</UL>
<P><STRONG><a name="[e8]"></a>ranging_ant_delays_set</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, lib_ranging.o(.text.ranging_ant_delays_set))
<BR><BR>[Called By]<UL><LI><a href="#[d9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_calibration_params_set
</UL>
<P><STRONG><a name="[db]"></a>ranging_frame_type_set</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, lib_ranging.o(.text.ranging_frame_type_set))
<BR><BR>[Called By]<UL><LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;simple_main
</UL>
<P><STRONG><a name="[57]"></a>ranging_rssi_get</STRONG> (Thumb, 88 bytes, Stack size 56 bytes, lib_ranging.o(.text.ranging_rssi_get))
<BR><BR>[Stack]<UL><LI>Max Depth = 172<LI>Call Chain = ranging_rssi_get &rArr; MK8000_read_rssi &rArr; __aeabi_fadd &rArr; _float_epilogue
</UL>
<BR>[Calls]<UL><LI><a href="#[5e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_f2iz
<LI><a href="#[6f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_read_rssi
</UL>
<BR>[Called By]<UL><LI><a href="#[a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MAC_IRQHandler
</UL>
<P><STRONG><a name="[d6]"></a>ranging_rx_time</STRONG> (Thumb, 532 bytes, Stack size 64 bytes, lib_ranging.o(.text.ranging_rx_time))
<BR><BR>[Stack]<UL><LI>Max Depth = 1556<LI>Call Chain = ranging_rx_time &rArr; sts_first_path_detect &rArr; MK8000_sts_first_patch_detect &rArr; MK8000_sts_FAP_detect &rArr; MK8000_fap_adjust_FLT &rArr; lsp_scale_f32 &rArr; lsp_g_op_f32 &rArr; lsp_engine_run &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[6a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fmul
<LI><a href="#[5e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_f2iz
<LI><a href="#[72]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_update_fap_fom
<LI><a href="#[d7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;sts_first_path_detect
<LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_preamble_FAP_LSP
</UL>
<BR>[Called By]<UL><LI><a href="#[2a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;rx_int_callback
</UL>
<P><STRONG><a name="[4d]"></a>ranging_tx_time</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, lib_ranging.o(.text.ranging_tx_time))
<BR><BR>[Called By]<UL><LI><a href="#[4a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Anchor_RecNearPoll
</UL>
<P><STRONG><a name="[bf]"></a>reset_cause_clear</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, mk_reset.o(.text.reset_cause_clear))
<BR><BR>[Called By]<UL><LI><a href="#[24]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[be]"></a>reset_cause_get</STRONG> (Thumb, 256 bytes, Stack size 8 bytes, mk_reset.o(.text.reset_cause_get))
<BR><BR>[Stack]<UL><LI>Max Depth = 748<LI>Call Chain = reset_cause_get &rArr; trace_printf &rArr; trace_output &rArr;  trace_printf (Cycle)
</UL>
<BR>[Calls]<UL><LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_printf
</UL>
<BR>[Called By]<UL><LI><a href="#[24]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[8f]"></a>reset_module</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, mk_reset.o(.text.reset_module))
<BR><BR>[Called By]<UL><LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;dma_open
<LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;calib_open
<LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;aes_open
<LI><a href="#[e4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_end
<LI><a href="#[ac]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gpio_open
<LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_open
<LI><a href="#[d8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_open
<LI><a href="#[b4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_init
<LI><a href="#[b1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_open
<LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uart_open
</UL>
<P><STRONG><a name="[85]"></a>save_com_map_to_flash</STRONG> (Thumb, 88 bytes, Stack size 24 bytes, global_param.o(.text.save_com_map_to_flash))
<BR><BR>[Stack]<UL><LI>Max Depth = 788<LI>Call Chain = save_com_map_to_flash &rArr; flash_open &rArr; trace_printf &rArr; trace_output &rArr;  trace_printf (Cycle)
</UL>
<BR>[Calls]<UL><LI><a href="#[ab]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_write_nbytes
<LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_open
<LI><a href="#[a9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_erase
</UL>
<BR>[Called By]<UL><LI><a href="#[27]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UsartParseDataHandler
</UL>
<P><STRONG><a name="[c6]"></a>simple_main</STRONG> (Thumb, 424 bytes, Stack size 40 bytes, simple_ss_twr_dw_resp.o(.text.simple_main))
<BR><BR>[Stack]<UL><LI>Max Depth = 1012<LI>Call Chain = simple_main &rArr; uwb_configure &rArr; phy_params_generate &rArr; trace_printf &rArr; trace_output &rArr;  trace_printf (Cycle)
</UL>
<BR>[Calls]<UL><LI><a href="#[50]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_is_busy
<LI><a href="#[dd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_rx
<LI><a href="#[d8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_open
<LI><a href="#[da]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_configure
<LI><a href="#[d9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_calibration_params_set
<LI><a href="#[4b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_timer_count_get
<LI><a href="#[db]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ranging_frame_type_set
<LI><a href="#[ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_adv_params_configure
<LI><a href="#[dc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_register_process_handler
<LI><a href="#[4a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Anchor_RecNearPoll
<LI><a href="#[84]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memcpy
</UL>
<BR>[Called By]<UL><LI><a href="#[24]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[7b]"></a>sleep_timer_ppm_set</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, mk_sleep_timer.o(.text.sleep_timer_ppm_set))
<BR><BR>[Called By]<UL><LI><a href="#[21]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;RCO32K_CAL_IRQHandler
</UL>
<P><STRONG><a name="[80]"></a>start_main_asm</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, startup_mk800x.o(.text.start_main_asm))
<BR><BR>[Called By]<UL><LI><a href="#[0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Reset_Handler
</UL>
<P><STRONG><a name="[e1]"></a>strlen</STRONG> (Thumb, 16 bytes, Stack size 8 bytes, libc.o(.text.strlen))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = strlen
</UL>
<BR>[Called By]<UL><LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_printf
<LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
</UL>
<P><STRONG><a name="[d7]"></a>sts_first_path_detect</STRONG> (Thumb, 24 bytes, Stack size 16 bytes, lib_aoa.o(.text.sts_first_path_detect))
<BR><BR>[Stack]<UL><LI>Max Depth = 1492<LI>Call Chain = sts_first_path_detect &rArr; MK8000_sts_first_patch_detect &rArr; MK8000_sts_FAP_detect &rArr; MK8000_fap_adjust_FLT &rArr; lsp_scale_f32 &rArr; lsp_g_op_f32 &rArr; lsp_engine_run &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[71]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MK8000_sts_first_patch_detect
</UL>
<BR>[Called By]<UL><LI><a href="#[d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ranging_rx_time
</UL>
<P><STRONG><a name="[98]"></a>sys_tick_start</STRONG> (Thumb, 76 bytes, Stack size 8 bytes, mk_misc.o(.text.sys_tick_start))
<BR><BR>[Stack]<UL><LI>Max Depth = 308<LI>Call Chain = sys_tick_start &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
</UL>
<BR>[Called By]<UL><LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;board_clock_run
</UL>
<P><STRONG><a name="[e2]"></a>sys_tick_us</STRONG> (Thumb, 88 bytes, Stack size 16 bytes, mk_misc.o(.text.sys_tick_us))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = sys_tick_us
</UL>
<BR>[Called By]<UL><LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_printf
<LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
<LI><a href="#[51]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_exception_handler
</UL>
<P><STRONG><a name="[56]"></a>sys_timer_get</STRONG> (Thumb, 12 bytes, Stack size 8 bytes, mk_misc.o(.text.sys_timer_get))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = sys_timer_get
</UL>
<BR>[Calls]<UL><LI><a href="#[de]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;dual_timer_get
</UL>
<BR>[Called By]<UL><LI><a href="#[ab]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_write_nbytes
<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_sector_erase
<LI><a href="#[78]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_read
<LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_open
<LI><a href="#[a7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_check_busy
<LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_block_erase
<LI><a href="#[aa]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_write_quad_mode
<LI><a href="#[a6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_write_cmd
<LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_dma_write_nbytes_callback
<LI><a href="#[25]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_dma_callback
<LI><a href="#[a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MAC_IRQHandler
</UL>
<P><STRONG><a name="[99]"></a>sys_timer_open</STRONG> (Thumb, 80 bytes, Stack size 40 bytes, mk_misc.o(.text.sys_timer_open))
<BR><BR>[Stack]<UL><LI>Max Depth = 364<LI>Call Chain = sys_timer_open &rArr; dual_timer_open &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[df]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;dual_timer_start
<LI><a href="#[a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;dual_timer_open
<LI><a href="#[79]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;clock_get_frequency
</UL>
<BR>[Called By]<UL><LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;board_clock_run
</UL>
<P><STRONG><a name="[48]"></a>trace_assert_dump</STRONG> (Thumb, 1008 bytes, Stack size 64 bytes, mk_trace.o(.text.trace_assert_dump))
<BR><BR>[Stack]<UL><LI>Max Depth = 300<LI>Call Chain = trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_format
<LI><a href="#[e0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_flush
<LI><a href="#[e4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_end
<LI><a href="#[e1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;strlen
<LI><a href="#[c7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mk_snprintf
<LI><a href="#[e3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_print_backtrace
<LI><a href="#[e2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;sys_tick_us
</UL>
<BR>[Called By]<UL><LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;dma_transfer
<LI><a href="#[f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ADC_IRQHandler
<LI><a href="#[a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;dual_timer_open
<LI><a href="#[e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;AES_IRQHandler
<LI><a href="#[e6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_output
<LI><a href="#[9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SLEEP_TIMER_IRQHandler
<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_sector_erase
<LI><a href="#[78]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_read
<LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_block_erase
<LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_dma_write_nbytes_callback
<LI><a href="#[25]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_dma_callback
<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;sys_tick_start
<LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_tx
<LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_rx
<LI><a href="#[b4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_init
<LI><a href="#[81]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uart_irq_handler
<LI><a href="#[2d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uart_dma_callback
<LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uart_open
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_link_desc_construct
<LI><a href="#[b2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_cs_construct
<LI><a href="#[bc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_tx_desc_construct
<LI><a href="#[65]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_scale_f32
<LI><a href="#[ae]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_g_op_int8
<LI><a href="#[b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_g_op_int16
<LI><a href="#[af]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_engine_run
<LI><a href="#[ad]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_g_op_f32
<LI><a href="#[23]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;PHY_TIMER_IRQHandler
</UL>
<P><STRONG><a name="[e4]"></a>trace_end</STRONG> (Thumb, 64 bytes, Stack size 0 bytes, mk_trace.o(.text.trace_end))
<BR><BR>[Calls]<UL><LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;reset_module
</UL>
<BR>[Called By]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
<LI><a href="#[51]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_exception_handler
</UL>
<P><STRONG><a name="[51]"></a>trace_exception_handler</STRONG> (Thumb, 1144 bytes, Stack size 40 bytes, mk_trace.o(.text.trace_exception_handler))
<BR><BR>[Stack]<UL><LI>Max Depth = 276<LI>Call Chain = trace_exception_handler &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[e0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_flush
<LI><a href="#[e4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_end
<LI><a href="#[c7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mk_snprintf
<LI><a href="#[e3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_print_backtrace
<LI><a href="#[e2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;sys_tick_us
</UL>
<BR>[Called By]<UL><LI><a href="#[2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HardFault_Handler
</UL>
<P><STRONG><a name="[e0]"></a>trace_flush</STRONG> (Thumb, 204 bytes, Stack size 24 bytes, mk_trace.o(.text.trace_flush))
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = trace_flush
</UL>
<BR>[Calls]<UL><LI><a href="#[e5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uart_tx_in_progress
</UL>
<BR>[Called By]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
<LI><a href="#[51]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_exception_handler
</UL>
<P><STRONG><a name="[c8]"></a>trace_format</STRONG> (Thumb, 944 bytes, Stack size 72 bytes, mk_trace.o(.text.trace_format))
<BR><BR>[Stack]<UL><LI>Max Depth = 172<LI>Call Chain = trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[6a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fmul
<LI><a href="#[62]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_fcmpge
<LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_PrintUnsigned
<LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_PrintInt
<LI><a href="#[5e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_f2iz
<LI><a href="#[44]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_d2f
<LI><a href="#[31]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
<LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidiv
</UL>
<BR>[Called By]<UL><LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_printf
<LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
<LI><a href="#[c7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mk_snprintf
</UL>
<P><STRONG><a name="[9b]"></a>trace_open</STRONG> (Thumb, 92 bytes, Stack size 48 bytes, mk_trace.o(.text.trace_open))
<BR><BR>[Stack]<UL><LI>Max Depth = 388<LI>Call Chain = trace_open &rArr; uart_open &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uart_open
</UL>
<BR>[Called By]<UL><LI><a href="#[9a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;board_debug_console_open
</UL>
<P><STRONG><a name="[e6]"></a>trace_output</STRONG> (Thumb, 500 bytes, Stack size 32 bytes, mk_trace.o(.text.trace_output))
<BR><BR>[Stack]<UL><LI>Max Depth = 444 + In Cycle
<LI>Call Chain = trace_output &rArr;  trace_printf (Cycle)
</UL>
<BR>[Calls]<UL><LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_printf
<LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
<LI><a href="#[86]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uart_send
<LI><a href="#[84]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memcpy
</UL>
<BR>[Called By]<UL><LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_printf
</UL>
<P><STRONG><a name="[49]"></a>trace_printf</STRONG> (Thumb, 300 bytes, Stack size 296 bytes, mk_trace.o(.text.trace_printf))
<BR><BR>[Stack]<UL><LI>Max Depth = 740<LI>Call Chain = trace_printf &rArr; trace_output &rArr;  trace_printf (Cycle)
</UL>
<BR>[Calls]<UL><LI><a href="#[e6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_output
<LI><a href="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_format
<LI><a href="#[e1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;strlen
<LI><a href="#[c7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mk_snprintf
<LI><a href="#[e2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;sys_tick_us
<LI><a href="#[e7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
</UL>
<BR>[Called By]<UL><LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;calib_chip
<LI><a href="#[e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;AES_IRQHandler
<LI><a href="#[e6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_output
<LI><a href="#[2c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_sending_continue
<LI><a href="#[21]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;RCO32K_CAL_IRQHandler
<LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;reset_cause_get
<LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_open
<LI><a href="#[9a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;board_debug_console_open
<LI><a href="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;wdt_close
<LI><a href="#[d8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_open
<LI><a href="#[da]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_configure
<LI><a href="#[d9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uwb_calibration_params_set
<LI><a href="#[d1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_tx_regs_config
<LI><a href="#[cc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_params_generate
<LI><a href="#[24]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
<LI><a href="#[a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MAC_IRQHandler
</UL>
<P><STRONG><a name="[81]"></a>uart_irq_handler</STRONG> (Thumb, 576 bytes, Stack size 40 bytes, mk_uart.o(.text.uart_irq_handler))
<BR><BR>[Stack]<UL><LI>Max Depth = 340<LI>Call Chain = uart_irq_handler &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
</UL>
<BR>[Called By]<UL><LI><a href="#[1f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART1_IRQHandler
<LI><a href="#[1e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART0_IRQHandler
</UL>
<P><STRONG><a name="[c3]"></a>uart_open</STRONG> (Thumb, 424 bytes, Stack size 40 bytes, mk_uart.o(.text.uart_open))
<BR><BR>[Stack]<UL><LI>Max Depth = 340<LI>Call Chain = uart_open &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
<LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;reset_module
<LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
<LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;clock_enable
<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;clock_set_divider
</UL>
<BR>[Called By]<UL><LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_open
<LI><a href="#[24]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[c5]"></a>uart_receive</STRONG> (Thumb, 520 bytes, Stack size 80 bytes, mk_uart.o(.text.uart_receive))
<BR><BR>[Stack]<UL><LI>Max Depth = 404<LI>Call Chain = uart_receive &rArr; dma_transfer &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;dma_transfer
<LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;dma_open
</UL>
<BR>[Called By]<UL><LI><a href="#[24]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[86]"></a>uart_send</STRONG> (Thumb, 688 bytes, Stack size 88 bytes, mk_uart.o(.text.uart_send))
<BR><BR>[Stack]<UL><LI>Max Depth = 412<LI>Call Chain = uart_send &rArr; dma_transfer &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;dma_transfer
<LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;dma_open
</UL>
<BR>[Called By]<UL><LI><a href="#[e6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_output
<LI><a href="#[2c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_sending_continue
<LI><a href="#[27]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UsartParseDataHandler
</UL>
<P><STRONG><a name="[e5]"></a>uart_tx_in_progress</STRONG> (Thumb, 32 bytes, Stack size 0 bytes, mk_uart.o(.text.uart_tx_in_progress))
<BR><BR>[Called By]<UL><LI><a href="#[e0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_flush
</UL>
<P><STRONG><a name="[7e]"></a>update_libc_rom_table</STRONG> (Thumb, 36 bytes, Stack size 0 bytes, libc.o(.text.update_libc_rom_table))
<BR><BR>[Called By]<UL><LI><a href="#[0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Reset_Handler
</UL>
<P><STRONG><a name="[d9]"></a>uwb_calibration_params_set</STRONG> (Thumb, 392 bytes, Stack size 48 bytes, mk_uwb.o(.text.uwb_calibration_params_set))
<BR><BR>[Stack]<UL><LI>Max Depth = 788<LI>Call Chain = uwb_calibration_params_set &rArr; trace_printf &rArr; trace_output &rArr;  trace_printf (Cycle)
</UL>
<BR>[Calls]<UL><LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_printf
<LI><a href="#[e9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;pdoa_gain_set
<LI><a href="#[eb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;pdoa_angle_offset_set
<LI><a href="#[e8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ranging_ant_delays_set
<LI><a href="#[ea]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;pdoa_ant_space_set
<LI><a href="#[c9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;pdoa_ant_delays_set
</UL>
<BR>[Called By]<UL><LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;simple_main
</UL>
<P><STRONG><a name="[da]"></a>uwb_configure</STRONG> (Thumb, 624 bytes, Stack size 48 bytes, mk_uwb.o(.text.uwb_configure))
<BR><BR>[Stack]<UL><LI>Max Depth = 972<LI>Call Chain = uwb_configure &rArr; phy_params_generate &rArr; trace_printf &rArr; trace_output &rArr;  trace_printf (Cycle)
</UL>
<BR>[Calls]<UL><LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_printf
<LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
<LI><a href="#[d1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_tx_regs_config
<LI><a href="#[ed]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_rx_regs_config
<LI><a href="#[ec]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_params_sets_enable
<LI><a href="#[cc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_params_generate
<LI><a href="#[ee]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_crc_mode_configure
</UL>
<BR>[Called By]<UL><LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;simple_main
</UL>
<P><STRONG><a name="[d8]"></a>uwb_open</STRONG> (Thumb, 100 bytes, Stack size 24 bytes, mk_uwb.o(.text.uwb_open))
<BR><BR>[Stack]<UL><LI>Max Depth = 764<LI>Call Chain = uwb_open &rArr; trace_printf &rArr; trace_output &rArr;  trace_printf (Cycle)
</UL>
<BR>[Calls]<UL><LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_printf
<LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;reset_module
<LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;aes_open
<LI><a href="#[f1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_timer_open
<LI><a href="#[f0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_init
<LI><a href="#[ef]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_rssi_calculation_en
<LI><a href="#[b4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_init
<LI><a href="#[b1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_open
</UL>
<BR>[Called By]<UL><LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;simple_main
</UL>
<P><STRONG><a name="[dd]"></a>uwb_rx</STRONG> (Thumb, 84 bytes, Stack size 24 bytes, mk_uwb.o(.text.uwb_rx))
<BR><BR>[Stack]<UL><LI>Max Depth = 420<LI>Call Chain = uwb_rx &rArr; mac_rx &rArr; mac_link_desc_construct &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[d5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;power_on_radio
<LI><a href="#[f2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_start
<LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_rx
<LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidiv
</UL>
<BR>[Called By]<UL><LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;simple_main
</UL>
<P><STRONG><a name="[4f]"></a>uwb_tx</STRONG> (Thumb, 100 bytes, Stack size 24 bytes, mk_uwb.o(.text.uwb_tx))
<BR><BR>[Stack]<UL><LI>Max Depth = 428<LI>Call Chain = uwb_tx &rArr; mac_tx &rArr; mac_tx_desc_construct &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[d5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;power_on_radio
<LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_tx
<LI><a href="#[f2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mac_start
</UL>
<BR>[Called By]<UL><LI><a href="#[4a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Anchor_RecNearPoll
</UL>
<P><STRONG><a name="[c2]"></a>wdt_close</STRONG> (Thumb, 104 bytes, Stack size 16 bytes, mk_wdt.o(.text.wdt_close))
<BR><BR>[Stack]<UL><LI>Max Depth = 756<LI>Call Chain = wdt_close &rArr; trace_printf &rArr; trace_output &rArr;  trace_printf (Cycle)
</UL>
<BR>[Calls]<UL><LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_printf
<LI><a href="#[7c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;clock_disable
</UL>
<BR>[Called By]<UL><LI><a href="#[24]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[45]"></a>__ARM_clz</STRONG> (Thumb, 46 bytes, Stack size 0 bytes, depilogue.o(i.__ARM_clz))
<BR><BR>[Called By]<UL><LI><a href="#[3c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_double_epilogue
</UL>
<P><STRONG><a name="[102]"></a>__scatterload_copy</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED)
<P><STRONG><a name="[103]"></a>__scatterload_null</STRONG> (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED)
<P><STRONG><a name="[104]"></a>__scatterload_zeroinit</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED)
<P>
<H3>
Local Symbols
</H3>
<P><STRONG><a name="[25]"></a>flash_dma_callback</STRONG> (Thumb, 332 bytes, Stack size 24 bytes, mk_flash.o(.text.flash_dma_callback))
<BR><BR>[Stack]<UL><LI>Max Depth = 348<LI>Call Chain = flash_dma_callback &rArr; dma_transfer &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
<LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;dma_transfer
<LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;sys_timer_get
<LI><a href="#[a6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_write_cmd
</UL>
<BR>[Address Reference Count : 2]<UL><LI> mk_flash.o(.text.flash_dma_callback)
<LI> mk_flash.o(.text.flash_read)
</UL>
<P><STRONG><a name="[26]"></a>flash_dma_write_nbytes_callback</STRONG> (Thumb, 508 bytes, Stack size 24 bytes, mk_flash.o(.text.flash_dma_write_nbytes_callback))
<BR><BR>[Stack]<UL><LI>Max Depth = 348<LI>Call Chain = flash_dma_write_nbytes_callback &rArr; dma_transfer &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
<LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;dma_transfer
<LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
<LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;sys_timer_get
<LI><a href="#[a6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_write_cmd
</UL>
<BR>[Address Reference Count : 2]<UL><LI> mk_flash.o(.text.flash_write_nbytes)
<LI> mk_flash.o(.text.flash_dma_write_nbytes_callback)
</UL>
<P><STRONG><a name="[a6]"></a>flash_write_cmd</STRONG> (Thumb, 256 bytes, Stack size 40 bytes, mk_flash.o(.text.flash_write_cmd))
<BR><BR>[Stack]<UL><LI>Max Depth = 48<LI>Call Chain = flash_write_cmd &rArr; sys_timer_get
</UL>
<BR>[Calls]<UL><LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;sys_timer_get
</UL>
<BR>[Called By]<UL><LI><a href="#[ab]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_write_nbytes
<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_sector_erase
<LI><a href="#[78]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_read
<LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_open
<LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_close
<LI><a href="#[a7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_check_busy
<LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_block_erase
<LI><a href="#[aa]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_write_quad_mode
<LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_dma_write_nbytes_callback
<LI><a href="#[25]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_dma_callback
</UL>
<P><STRONG><a name="[aa]"></a>flash_write_quad_mode</STRONG> (Thumb, 192 bytes, Stack size 32 bytes, mk_flash.o(.text.flash_write_quad_mode))
<BR><BR>[Stack]<UL><LI>Max Depth = 80<LI>Call Chain = flash_write_quad_mode &rArr; flash_write_cmd &rArr; sys_timer_get
</UL>
<BR>[Calls]<UL><LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
<LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;sys_timer_get
<LI><a href="#[a6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_write_cmd
<LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidiv
</UL>
<BR>[Called By]<UL><LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;flash_open
</UL>
<P><STRONG><a name="[7d]"></a>rtc_second_to_time</STRONG> (Thumb, 436 bytes, Stack size 40 bytes, mk_rtc.o(.text.rtc_second_to_time))
<BR><BR>[Stack]<UL><LI>Max Depth = 56<LI>Call Chain = rtc_second_to_time &rArr; __aeabi_idiv
</UL>
<BR>[Calls]<UL><LI><a href="#[7a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_idiv
<LI><a href="#[31]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
<LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidiv
</UL>
<BR>[Called By]<UL><LI><a href="#[15]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;RTC_TICK_IRQHandler
<LI><a href="#[14]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;RTC_ALARM_IRQHandler
</UL>
<P><STRONG><a name="[8b]"></a>_PrintInt</STRONG> (Thumb, 302 bytes, Stack size 40 bytes, mk_trace.o(.text._PrintInt))
<BR><BR>[Stack]<UL><LI>Max Depth = 100<LI>Call Chain = _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_PrintUnsigned
<LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidiv
</UL>
<BR>[Called By]<UL><LI><a href="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_format
</UL>
<P><STRONG><a name="[8c]"></a>_PrintUnsigned</STRONG> (Thumb, 320 bytes, Stack size 48 bytes, mk_trace.o(.text._PrintUnsigned))
<BR><BR>[Stack]<UL><LI>Max Depth = 60<LI>Call Chain = _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidiv
</UL>
<BR>[Called By]<UL><LI><a href="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_format
<LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_PrintInt
</UL>
<P><STRONG><a name="[e3]"></a>trace_print_backtrace</STRONG> (Thumb, 236 bytes, Stack size 48 bytes, mk_trace.o(.text.trace_print_backtrace))
<BR><BR>[Stack]<UL><LI>Max Depth = 236<LI>Call Chain = trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[c7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mk_snprintf
</UL>
<BR>[Called By]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
<LI><a href="#[51]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_exception_handler
</UL>
<P><STRONG><a name="[2c]"></a>trace_sending_continue</STRONG> (Thumb, 228 bytes, Stack size 24 bytes, mk_trace.o(.text.trace_sending_continue))
<BR><BR>[Stack]<UL><LI>Max Depth = 764<LI>Call Chain = trace_sending_continue &rArr; trace_printf &rArr; trace_output &rArr;  trace_printf (Cycle)
</UL>
<BR>[Calls]<UL><LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_printf
<LI><a href="#[86]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;uart_send
</UL>
<BR>[Address Reference Count : 2]<UL><LI> mk_trace.o(.text.trace_output)
<LI> mk_trace.o(.text.trace_sending_continue)
</UL>
<P><STRONG><a name="[2d]"></a>uart_dma_callback</STRONG> (Thumb, 356 bytes, Stack size 40 bytes, mk_uart.o(.text.uart_dma_callback))
<BR><BR>[Stack]<UL><LI>Max Depth = 340<LI>Call Chain = uart_dma_callback &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
</UL>
<BR>[Address Reference Count : 1]<UL><LI> mk_uart.o(.text.uart_send)
</UL>
<P><STRONG><a name="[28]"></a>uart_receive_callback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, main.o(.text.uart_receive_callback))
<BR>[Address Reference Count : 1]<UL><LI> main.o(.text.main)
</UL>
<P><STRONG><a name="[2a]"></a>rx_int_callback</STRONG> (Thumb, 160 bytes, Stack size 16 bytes, simple_ss_twr_dw_resp.o(.text.rx_int_callback))
<BR><BR>[Stack]<UL><LI>Max Depth = 1572<LI>Call Chain = rx_int_callback &rArr; ranging_rx_time &rArr; sts_first_path_detect &rArr; MK8000_sts_first_patch_detect &rArr; MK8000_sts_FAP_detect &rArr; MK8000_fap_adjust_FLT &rArr; lsp_scale_f32 &rArr; lsp_g_op_f32 &rArr; lsp_engine_run &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[d2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;power_off_radio
<LI><a href="#[4b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_timer_count_get
<LI><a href="#[d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ranging_rx_time
<LI><a href="#[4c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_shr_duration
<LI><a href="#[4e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ranging_ant_delays_get
<LI><a href="#[84]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memcpy
</UL>
<BR>[Address Reference Count : 1]<UL><LI> simple_ss_twr_dw_resp.o(.text.simple_main)
</UL>
<P><STRONG><a name="[29]"></a>tx_int_callback</STRONG> (Thumb, 40 bytes, Stack size 8 bytes, simple_ss_twr_dw_resp.o(.text.tx_int_callback))
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = tx_int_callback &rArr; power_off_radio
</UL>
<BR>[Calls]<UL><LI><a href="#[d2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;power_off_radio
<LI><a href="#[4b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_timer_count_get
</UL>
<BR>[Address Reference Count : 1]<UL><LI> simple_ss_twr_dw_resp.o(.text.simple_main)
</UL>
<P><STRONG><a name="[ad]"></a>lsp_g_op_f32</STRONG> (Thumb, 192 bytes, Stack size 64 bytes, mk_lsp.o(.text.lsp_g_op_f32))
<BR><BR>[Stack]<UL><LI>Max Depth = 380<LI>Call Chain = lsp_g_op_f32 &rArr; lsp_engine_run &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
<LI><a href="#[af]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_engine_run
</UL>
<BR>[Called By]<UL><LI><a href="#[60]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_cmplx_inner_product_f32
<LI><a href="#[65]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_scale_f32
<LI><a href="#[66]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_inner_product_f32
<LI><a href="#[64]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_vinverse_f32
</UL>
<P><STRONG><a name="[af]"></a>lsp_engine_run</STRONG> (Thumb, 204 bytes, Stack size 16 bytes, mk_lsp.o(.text.lsp_engine_run))
<BR><BR>[Stack]<UL><LI>Max Depth = 316<LI>Call Chain = lsp_engine_run &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
</UL>
<BR>[Called By]<UL><LI><a href="#[ae]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_g_op_int8
<LI><a href="#[b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_g_op_int16
<LI><a href="#[ad]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_g_op_f32
</UL>
<P><STRONG><a name="[b0]"></a>lsp_g_op_int16</STRONG> (Thumb, 212 bytes, Stack size 72 bytes, mk_lsp.o(.text.lsp_g_op_int16))
<BR><BR>[Stack]<UL><LI>Max Depth = 388<LI>Call Chain = lsp_g_op_int16 &rArr; lsp_engine_run &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
<LI><a href="#[af]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_engine_run
</UL>
<BR>[Called By]<UL><LI><a href="#[6d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_inner_product_int16
</UL>
<P><STRONG><a name="[ae]"></a>lsp_g_op_int8</STRONG> (Thumb, 208 bytes, Stack size 64 bytes, mk_lsp.o(.text.lsp_g_op_int8))
<BR><BR>[Stack]<UL><LI>Max Depth = 380<LI>Call Chain = lsp_g_op_int8 &rArr; lsp_engine_run &rArr; trace_assert_dump &rArr; trace_print_backtrace &rArr; mk_snprintf &rArr; trace_format &rArr; _PrintInt &rArr; _PrintUnsigned &rArr; __aeabi_uidiv
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;trace_assert_dump
<LI><a href="#[af]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_engine_run
</UL>
<BR>[Called By]<UL><LI><a href="#[6c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;lsp_cmplx_mult_cmplx_int8
</UL>
<P><STRONG><a name="[cf]"></a>phy_sts_related_params_update</STRONG> (Thumb, 176 bytes, Stack size 8 bytes, mk_phy.o(.text.phy_sts_related_params_update))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = phy_sts_related_params_update
</UL>
<BR>[Called By]<UL><LI><a href="#[cc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;phy_params_generate
</UL>
<P>
<H3>
Undefined Global Symbols
</H3><HR></body></html>
keil/Objects/uwb_simple_example.lnp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
--cpu Cortex-M0
".\objects\cmp_svec.o"
".\include\components\algo\lib\lib_aoa.lib"
".\include\components\algo\lib\lib_ranging.lib"
".\objects\startup_mk800x.o"
".\objects\system_mk800x.o"
".\include\drivers\lib\lib_lsp.lib"
".\include\drivers\lib\lib_mac_phy.lib"
".\objects\mk_adc.o"
".\objects\mk_aes.o"
".\objects\mk_calib.o"
".\objects\mk_clock.o"
".\objects\mk_dma.o"
".\objects\mk_dual_timer.o"
".\objects\mk_flash.o"
".\objects\mk_gpio.o"
".\objects\mk_io.o"
".\objects\mk_misc.o"
".\objects\mk_power.o"
".\objects\mk_reset.o"
".\objects\mk_rtc.o"
".\objects\mk_sleep_timer.o"
".\objects\mk_trace.o"
".\objects\mk_uart.o"
".\objects\mk_uwb.o"
".\objects\mk_wdt.o"
".\objects\serial_at_cmd_app.o"
".\objects\global_param.o"
".\objects\usart.o"
".\objects\usart1.o"
".\objects\dw_app_anchor.o"
".\objects\board.o"
".\objects\pin_config.o"
".\objects\main.o"
".\objects\wsf_assert.o"
".\objects\wsf_buf.o"
".\objects\wsf_bufio.o"
".\objects\wsf_heap.o"
".\objects\wsf_msg.o"
".\objects\wsf_nvm.o"
".\objects\wsf_os.o"
".\objects\wsf_queue.o"
".\objects\wsf_timer.o"
".\objects\wsf_trace.o"
".\objects\pal_flash.o"
".\objects\pal_sys.o"
".\objects\pal_uart.o"
".\objects\simple_ss_twr_dw_resp.o"
".\objects\simple_ds_twr_init.o"
".\objects\simple_ds_twr_init_sts.o"
".\objects\simple_ds_twr_resp.o"
".\objects\simple_ds_twr_resp_sts.o"
".\objects\simple_rx.o"
".\objects\simple_tx.o"
".\objects\crc.o"
".\objects\libc.o"
--library_type=microlib --strict --scatter ".\include\devices\MK800X\Source\ARM\MK800X_ac6.sct"
--summary_stderr --info summarysizes --map --load_addr_map_info --xref --callgraph --symbols
--info sizes --info totals --info unused --info veneers
--list ".\Listings\uwb_simple_example.map" -o .\Objects\uwb_simple_example.axf
keil/Objects/uwb_simple_example_MK8000 Release.dep
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1137 @@
Dependencies for Project 'uwb_simple_example', Target 'MK8000 Release': (DO NOT MODIFY !)
CompilerVersion: 6140000::V6.14::ARMCLANG
F (.\include\components\algo\src\steering_vector\cmp_svec.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/components/algo/inc -I ./include/components/algo/lib -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/cmp_svec.o -MD)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (include\components\algo\inc\lib_aoa.h)(0x668D7167)
I (include\drivers\mk_uwb.h)(0x66A1FA40)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_mac.h)(0x668D7166)
I (include\drivers\mk_phy.h)(0x668D7166)
F (.\include\components\algo\lib\lib_aoa.lib)(0x668D7167)()
F (.\include\components\algo\lib\lib_ranging.lib)(0x668D7167)()
F (.\include\devices\MK800X\Source\startup_MK800X.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/devices/MK800X/Source -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/startup_mk800x.o -MD)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
F (.\include\devices\MK800X\Source\system_MK800X.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/devices/MK800X/Source -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/system_mk800x.o -MD)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
F (.\include\drivers\lib\lib_lsp.lib)(0x668D7166)()
F (.\include\drivers\lib\lib_mac_phy.lib)(0x668D7166)()
F (.\include\drivers\mk_adc.c)(0x66A7306E)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/mk_adc.o -MD)
I (include\drivers\mk_adc.h)(0x668D7165)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (include\drivers\mk_clock.h)(0x668D7165)
I (include\drivers\mk_reset.h)(0x668D7165)
I (include\drivers\mk_trace.h)(0x668D7165)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\drivers\mk_misc.h)(0x668D7165)
F (.\include\drivers\mk_aes.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/mk_aes.o -MD)
I (include\drivers\mk_aes.h)(0x668D7165)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (include\drivers\mk_clock.h)(0x668D7165)
I (include\drivers\mk_reset.h)(0x668D7165)
I (include\drivers\mk_trace.h)(0x668D7165)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
F (.\include\drivers\mk_calib.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/mk_calib.o -MD)
I (include\drivers\mk_calib.h)(0x668D7165)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_clock.h)(0x668D7165)
I (include\drivers\mk_reset.h)(0x668D7165)
I (include\drivers\mk_trace.h)(0x668D7165)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\drivers\mk_misc.h)(0x668D7165)
I (include\drivers\mk_rtc.h)(0x668D7165)
I (include\board\board.h)(0x66A1AE96)
I (include\drivers\mk_gpio.h)(0x668D7165)
I (include\drivers\mk_io.h)(0x668D7165)
F (.\include\drivers\mk_clock.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/mk_clock.o -MD)
I (include\drivers\mk_clock.h)(0x668D7165)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
F (.\include\drivers\mk_dma.c)(0x66A1A4DA)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/mk_dma.o -MD)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_clock.h)(0x668D7165)
I (include\drivers\mk_reset.h)(0x668D7165)
I (include\drivers\mk_trace.h)(0x668D7165)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
F (.\include\drivers\mk_dual_timer.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/mk_dual_timer.o -MD)
I (include\drivers\mk_dual_timer.h)(0x668D7165)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_clock.h)(0x668D7165)
I (include\drivers\mk_reset.h)(0x668D7165)
I (include\drivers\mk_trace.h)(0x668D7165)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
F (.\include\drivers\mk_flash.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/mk_flash.o -MD)
I (include\drivers\mk_flash.h)(0x668D7165)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (include\drivers\mk_misc.h)(0x668D7165)
I (include\drivers\mk_clock.h)(0x668D7165)
I (include\drivers\mk_reset.h)(0x668D7165)
I (include\drivers\mk_trace.h)(0x668D7165)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
F (.\include\drivers\mk_gpio.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/mk_gpio.o -MD)
I (include\drivers\mk_gpio.h)(0x668D7165)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_io.h)(0x668D7165)
I (include\drivers\mk_clock.h)(0x668D7165)
I (include\drivers\mk_reset.h)(0x668D7165)
I (include\drivers\mk_trace.h)(0x668D7165)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
F (.\include\drivers\mk_io.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/mk_io.o -MD)
I (include\drivers\mk_io.h)(0x668D7165)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
F (.\include\drivers\mk_misc.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/mk_misc.o -MD)
I (include\drivers\mk_misc.h)(0x668D7165)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_dual_timer.h)(0x668D7165)
I (include\drivers\mk_clock.h)(0x668D7165)
I (include\drivers\mk_trace.h)(0x668D7165)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\drivers\mk_sleep_timer.h)(0x668D7165)
I (include\drivers\mk_reset.h)(0x668D7165)
F (.\include\drivers\mk_power.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/mk_power.o -MD)
I (include\drivers\mk_power.h)(0x668D7165)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_trace.h)(0x668D7165)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\drivers\mk_clock.h)(0x668D7165)
I (include\drivers\mk_io.h)(0x668D7165)
I (include\drivers\mk_flash.h)(0x668D7165)
I (include\drivers\mk_misc.h)(0x668D7165)
I (include\drivers\mk_gpio.h)(0x668D7165)
I (include\drivers\mk_reset.h)(0x668D7165)
I (include\drivers\mk_uwb.h)(0x66A1FA40)
I (include\drivers\mk_mac.h)(0x668D7166)
I (include\drivers\mk_phy.h)(0x668D7166)
I (include\drivers\mk_sleep_timer.h)(0x668D7165)
F (.\include\drivers\mk_reset.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/mk_reset.o -MD)
I (include\drivers\mk_reset.h)(0x668D7165)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_trace.h)(0x668D7165)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
F (.\include\drivers\mk_rtc.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/mk_rtc.o -MD)
I (include\drivers\mk_rtc.h)(0x668D7165)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_clock.h)(0x668D7165)
I (include\drivers\mk_reset.h)(0x668D7165)
I (include\drivers\mk_trace.h)(0x668D7165)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\drivers\mk_sleep_timer.h)(0x668D7165)
F (.\include\drivers\mk_sleep_timer.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/mk_sleep_timer.o -MD)
I (include\drivers\mk_sleep_timer.h)(0x668D7165)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_trace.h)(0x668D7165)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\drivers\mk_clock.h)(0x668D7165)
I (include\drivers\mk_power.h)(0x668D7165)
F (.\include\drivers\mk_trace.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/mk_trace.o -MD)
I (include\drivers\mk_trace.h)(0x668D7165)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\drivers\mk_reset.h)(0x668D7165)
I (include\drivers\mk_io.h)(0x668D7165)
I (include\drivers\mk_misc.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdio.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdlib.h)(0x5DDFFD6A)
F (.\include\drivers\mk_uart.c)(0x66A1A482)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/mk_uart.o -MD)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (include\drivers\mk_trace.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\drivers\mk_clock.h)(0x668D7165)
I (include\drivers\mk_reset.h)(0x668D7165)
I (include\drivers\mk_misc.h)(0x668D7165)
F (.\include\drivers\mk_uwb.c)(0x668D7166)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/mk_uwb.o -MD)
I (include\drivers\mk_uwb.h)(0x66A1FA40)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_mac.h)(0x668D7166)
I (include\drivers\mk_phy.h)(0x668D7166)
I (include\drivers\mk_reset.h)(0x668D7165)
I (include\drivers\mk_clock.h)(0x668D7165)
I (include\drivers\mk_trace.h)(0x668D7165)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\drivers\mk_misc.h)(0x668D7165)
I (include\drivers\mk_aes.h)(0x668D7165)
I (include\drivers\mk_lsp.h)(0x668D7166)
I (include\drivers\mk_power.h)(0x668D7165)
I (include\board\board.h)(0x66A1AE96)
I (include\drivers\mk_gpio.h)(0x668D7165)
I (include\drivers\mk_io.h)(0x668D7165)
F (.\include\drivers\mk_wdt.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/mk_wdt.o -MD)
I (include\drivers\mk_wdt.h)(0x668D7165)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_clock.h)(0x668D7165)
I (include\drivers\mk_reset.h)(0x668D7165)
I (include\drivers\mk_trace.h)(0x668D7165)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
F (.\include\drivers\serial_at_cmd_app.c)(0x669E10FE)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/serial_at_cmd_app.o -MD)
I (include\drivers\serial_at_cmd_app.h)(0x66866AC7)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (include\drivers\global_param.h)(0x669E032E)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdio.h)(0x5DDFFD72)
I (include\drivers\Usart.h)(0x669E0D33)
I (include\board\board.h)(0x66A1AE96)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_trace.h)(0x668D7165)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\drivers\mk_gpio.h)(0x668D7165)
I (include\drivers\mk_io.h)(0x668D7165)
F (.\include\drivers\global_param.c)(0x669E1627)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/global_param.o -MD)
I (include\drivers\global_param.h)(0x669E032E)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (include\drivers\mk_flash.h)(0x668D7165)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (include\drivers\mk_misc.h)(0x668D7165)
F (.\include\drivers\Usart.c)(0x6690EF22)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/usart.o -MD)
I (include\drivers\Usart.h)(0x669E0D33)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdio.h)(0x5DDFFD72)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_dma.h)(0x66A1A50C)
F (.\include\drivers\Usart1.c)(0x6690F295)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/usart1.o -MD)
I (include\drivers\Usart.h)(0x669E0D33)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (include\drivers\Usart1.h)(0x668661D7)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdio.h)(0x5DDFFD72)
F (.\dw_app_anchor.c)(0x669E1D1B)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/drivers -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/dw_app_anchor.o -MD)
I (dw_app_anchor.h)(0x669A1FB1)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
F (.\include\board\board.c)(0x66A1AE6B)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/board -I ./include/board -I ../keil -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/board.o -MD)
I (include\board\board.h)(0x66A1AE96)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_trace.h)(0x668D7165)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\drivers\mk_gpio.h)(0x668D7165)
I (include\drivers\mk_io.h)(0x668D7165)
I (include\drivers\mk_power.h)(0x668D7165)
I (include\drivers\mk_clock.h)(0x668D7165)
I (include\drivers\mk_calib.h)(0x668D7165)
I (include\drivers\mk_misc.h)(0x668D7165)
I (include\drivers\mk_uwb.h)(0x66A1FA40)
I (include\drivers\mk_mac.h)(0x668D7166)
I (include\drivers\mk_phy.h)(0x668D7166)
F (..\pin_config.c)(0x668F47D8)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/board -I ../keil -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/pin_config.o -MD)
I (include\drivers\mk_io.h)(0x668D7165)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\board\board.h)(0x66A1AE96)
I (include\drivers\mk_trace.h)(0x668D7165)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\drivers\mk_gpio.h)(0x668D7165)
F (.\include\main\main.c)(0x66A1B522)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/board -I ../keil -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/main.o -MD)
I (include\drivers\mk_trace.h)(0x668D7165)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\drivers\mk_wdt.h)(0x668D7165)
I (include\drivers\mk_calib.h)(0x668D7165)
I (include\drivers\mk_misc.h)(0x668D7165)
I (include\drivers\mk_flash.h)(0x668D7165)
I (include\components\libc\libc_rom.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdio.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdlib.h)(0x5DDFFD6A)
I (d:\Keil_v5\ARM\ARMCLANG\include\math.h)(0x5DDFFD6C)
I (include\drivers\serial_at_cmd_app.h)(0x66866AC7)
I (include\drivers\global_param.h)(0x669E032E)
I (include\board\board.h)(0x66A1AE96)
I (include\drivers\mk_gpio.h)(0x668D7165)
I (include\drivers\mk_io.h)(0x668D7165)
I (include\components\wsf\include\wsf_nvm.h)(0x668D7167)
I (include\components\wsf\include\wsf_types.h)(0x668D7167)
I (include\drivers\mk_power.h)(0x668D7165)
I (include\drivers\Usart.h)(0x669E0D33)
F (.\include\components\wsf\sources\port\baremetal\wsf_assert.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/components/wsf/include/platform -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/wsf_assert.o -MD)
I (include\components\wsf\include\wsf_assert.h)(0x668D7167)
I (include\components\wsf\include\wsf_trace.h)(0x668D7167)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\components\wsf\include\wsf_types.h)(0x668D7167)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\components\wsf\include\platform\pal_sys.h)(0x668D7167)
I (include\components\wsf\include\platform\pal_types.h)(0x668D7167)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
F (.\include\components\wsf\sources\port\baremetal\wsf_buf.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/wsf_buf.o -MD)
I (include\components\wsf\include\wsf_types.h)(0x668D7167)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\components\wsf\include\wsf_buf.h)(0x668D7167)
I (include\components\wsf\include\wsf_assert.h)(0x668D7167)
I (include\components\wsf\include\wsf_trace.h)(0x668D7167)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\components\wsf\include\wsf_cs.h)(0x668D7167)
I (include\components\wsf\include\platform\pal_sys.h)(0x668D7167)
I (include\components\wsf\include\platform\pal_types.h)(0x668D7167)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\components\wsf\include\wsf_heap.h)(0x668D7167)
I (include\components\wsf\include\wsf_math.h)(0x668D7167)
I (include\components\wsf\include\wsf_os.h)(0x668D7167)
I (include\components\wsf\include\wsf_queue.h)(0x668D7167)
F (.\include\components\wsf\sources\port\baremetal\wsf_bufio.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/wsf_bufio.o -MD)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\components\wsf\include\wsf_types.h)(0x668D7167)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (include\components\wsf\include\wsf_bufio.h)(0x668D7167)
I (include\components\wsf\include\wsf_cs.h)(0x668D7167)
I (include\components\wsf\include\platform\pal_sys.h)(0x668D7167)
I (include\components\wsf\include\platform\pal_types.h)(0x668D7167)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\components\wsf\include\wsf_trace.h)(0x668D7167)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\components\wsf\include\wsf_os.h)(0x668D7167)
I (include\components\wsf\include\wsf_queue.h)(0x668D7167)
I (include\components\wsf\include\platform\pal_uart.h)(0x668D7167)
F (.\include\components\wsf\sources\port\baremetal\wsf_heap.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/wsf_heap.o -MD)
I (include\components\wsf\include\wsf_types.h)(0x668D7167)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\components\wsf\include\wsf_assert.h)(0x668D7167)
I (include\components\wsf\include\wsf_trace.h)(0x668D7167)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\components\wsf\include\wsf_cs.h)(0x668D7167)
I (include\components\wsf\include\platform\pal_sys.h)(0x668D7167)
I (include\components\wsf\include\platform\pal_types.h)(0x668D7167)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\components\wsf\include\wsf_buf.h)(0x668D7167)
I (include\components\wsf\include\wsf_math.h)(0x668D7167)
I (include\components\wsf\include\wsf_os.h)(0x668D7167)
I (include\components\wsf\include\wsf_queue.h)(0x668D7167)
I (include\components\wsf\include\wsf_heap.h)(0x668D7167)
F (.\include\components\wsf\sources\port\baremetal\wsf_msg.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/wsf_msg.o -MD)
I (include\components\wsf\include\wsf_types.h)(0x668D7167)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\components\wsf\include\wsf_msg.h)(0x668D7167)
I (include\components\wsf\include\wsf_queue.h)(0x668D7167)
I (include\components\wsf\include\wsf_os.h)(0x668D7167)
I (include\components\wsf\include\wsf_assert.h)(0x668D7167)
I (include\components\wsf\include\wsf_trace.h)(0x668D7167)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\components\wsf\include\wsf_buf.h)(0x668D7167)
F (.\include\components\wsf\sources\port\baremetal\wsf_nvm.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/wsf_nvm.o -MD)
I (include\components\wsf\include\wsf_types.h)(0x668D7167)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\components\wsf\include\wsf_nvm.h)(0x668D7167)
I (include\components\wsf\include\wsf_assert.h)(0x668D7167)
I (include\components\wsf\include\wsf_trace.h)(0x668D7167)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\components\wsf\include\platform\pal_flash.h)(0x668D7167)
I (include\components\wsf\include\platform\pal_types.h)(0x668D7167)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\components\crc\crc.h)(0x668D7167)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdlib.h)(0x5DDFFD6A)
F (.\include\components\wsf\sources\port\baremetal\wsf_os.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/wsf_os.o -MD)
I (include\components\wsf\include\wsf_types.h)(0x668D7167)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\components\wsf\include\wsf_os.h)(0x668D7167)
I (include\components\wsf\include\wsf_queue.h)(0x668D7167)
I (include\components\wsf\include\wsf_assert.h)(0x668D7167)
I (include\components\wsf\include\wsf_trace.h)(0x668D7167)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\components\wsf\include\wsf_timer.h)(0x668D7167)
I (include\components\wsf\include\wsf_buf.h)(0x668D7167)
I (include\components\wsf\include\wsf_msg.h)(0x668D7167)
I (include\components\wsf\include\wsf_cs.h)(0x668D7167)
I (include\components\wsf\include\platform\pal_sys.h)(0x668D7167)
I (include\components\wsf\include\platform\pal_types.h)(0x668D7167)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
F (.\include\components\wsf\sources\port\baremetal\wsf_queue.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/wsf_queue.o -MD)
I (include\components\wsf\include\wsf_types.h)(0x668D7167)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\components\wsf\include\wsf_queue.h)(0x668D7167)
I (include\components\wsf\include\wsf_assert.h)(0x668D7167)
I (include\components\wsf\include\wsf_trace.h)(0x668D7167)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\components\wsf\include\wsf_cs.h)(0x668D7167)
I (include\components\wsf\include\platform\pal_sys.h)(0x668D7167)
I (include\components\wsf\include\platform\pal_types.h)(0x668D7167)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
F (.\include\components\wsf\sources\port\baremetal\wsf_timer.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/wsf_timer.o -MD)
I (include\components\wsf\include\wsf_types.h)(0x668D7167)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\components\wsf\include\wsf_queue.h)(0x668D7167)
I (include\components\wsf\include\wsf_timer.h)(0x668D7167)
I (include\components\wsf\include\wsf_os.h)(0x668D7167)
I (include\components\wsf\include\wsf_assert.h)(0x668D7167)
I (include\components\wsf\include\wsf_trace.h)(0x668D7167)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\components\wsf\include\wsf_cs.h)(0x668D7167)
I (include\components\wsf\include\platform\pal_sys.h)(0x668D7167)
I (include\components\wsf\include\platform\pal_types.h)(0x668D7167)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
F (.\include\components\wsf\sources\port\baremetal\wsf_trace.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/wsf_trace.o -MD)
I (include\components\wsf\include\wsf_types.h)(0x668D7167)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\components\wsf\include\wsf_trace.h)(0x668D7167)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\components\wsf\include\wsf_bufio.h)(0x668D7167)
I (include\components\wsf\include\wsf_buf.h)(0x668D7167)
I (include\components\wsf\include\platform\pal_sys.h)(0x668D7167)
I (include\components\wsf\include\platform\pal_types.h)(0x668D7167)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\components\wsf\include\wsf_assert.h)(0x668D7167)
I (include\components\wsf\include\wsf_cs.h)(0x668D7167)
F (.\include\components\wsf\sources\platform\pal_flash.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/components/wsf/sources/platform -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/pal_flash.o -MD)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\components\wsf\include\platform\pal_flash.h)(0x668D7167)
I (include\components\wsf\include\platform\pal_types.h)(0x668D7167)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_flash.h)(0x668D7165)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (include\drivers\mk_misc.h)(0x668D7165)
F (.\include\components\wsf\sources\platform\pal_sys.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/pal_sys.o -MD)
I (include\components\wsf\include\platform\pal_sys.h)(0x668D7167)
I (include\components\wsf\include\platform\pal_types.h)(0x668D7167)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\components\wsf\include\platform\pal_uart.h)(0x668D7167)
I (include\drivers\mk_misc.h)(0x668D7165)
F (.\include\components\wsf\sources\platform\pal_uart.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/pal_uart.o -MD)
I (include\components\wsf\include\platform\pal_uart.h)(0x668D7167)
I (include\components\wsf\include\platform\pal_types.h)(0x668D7167)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
F (.\simple_ss_twr_dw_resp.c)(0x66A35035)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/simple_ss_twr_dw_resp.o -MD)
I (include\drivers\mk_trace.h)(0x668D7165)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\drivers\mk_uwb.h)(0x66A1FA40)
I (include\drivers\mk_mac.h)(0x668D7166)
I (include\drivers\mk_phy.h)(0x668D7166)
I (include\drivers\mk_misc.h)(0x668D7165)
I (include\drivers\mk_power.h)(0x668D7165)
I (include\drivers\mk_sleep_timer.h)(0x668D7165)
I (include\components\algo\inc\lib_ranging.h)(0x668D7167)
I (dw_app_anchor.h)(0x669A1FB1)
I (include\board\board.h)(0x66A1AE96)
I (include\drivers\mk_gpio.h)(0x668D7165)
I (include\drivers\mk_io.h)(0x668D7165)
F (.\include\src\uwb_examples\uwb_simple_example\simple_ds_twr_init\simple_ds_twr_init.c)(0x66A377C7)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/simple_ds_twr_init.o -MD)
I (include\drivers\mk_trace.h)(0x668D7165)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\drivers\mk_uwb.h)(0x66A1FA40)
I (include\drivers\mk_mac.h)(0x668D7166)
I (include\drivers\mk_phy.h)(0x668D7166)
I (include\drivers\mk_misc.h)(0x668D7165)
I (include\drivers\mk_power.h)(0x668D7165)
I (include\drivers\mk_sleep_timer.h)(0x668D7165)
I (include\components\algo\inc\lib_ranging.h)(0x668D7167)
I (include\board\board.h)(0x66A1AE96)
I (include\drivers\mk_gpio.h)(0x668D7165)
I (include\drivers\mk_io.h)(0x668D7165)
F (.\include\src\uwb_examples\uwb_simple_example\simple_ds_twr_init_sts\simple_ds_twr_init_sts.c)(0x668D7168)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/simple_ds_twr_init_sts.o -MD)
I (include\drivers\mk_trace.h)(0x668D7165)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\drivers\mk_uwb.h)(0x66A1FA40)
I (include\drivers\mk_mac.h)(0x668D7166)
I (include\drivers\mk_phy.h)(0x668D7166)
I (include\drivers\mk_misc.h)(0x668D7165)
I (include\drivers\mk_power.h)(0x668D7165)
I (include\drivers\mk_sleep_timer.h)(0x668D7165)
I (include\components\algo\inc\lib_ranging.h)(0x668D7167)
I (include\components\algo\inc\lib_aoa.h)(0x668D7167)
I (include\board\board.h)(0x66A1AE96)
I (include\drivers\mk_gpio.h)(0x668D7165)
I (include\drivers\mk_io.h)(0x668D7165)
F (.\include\src\uwb_examples\uwb_simple_example\simple_ds_twr_resp\simple_ds_twr_resp.c)(0x66A1F453)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/simple_ds_twr_resp.o -MD)
I (include\drivers\mk_trace.h)(0x668D7165)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\drivers\mk_uwb.h)(0x66A1FA40)
I (include\drivers\mk_mac.h)(0x668D7166)
I (include\drivers\mk_phy.h)(0x668D7166)
I (include\drivers\mk_misc.h)(0x668D7165)
I (include\drivers\mk_power.h)(0x668D7165)
I (include\drivers\mk_sleep_timer.h)(0x668D7165)
I (include\components\algo\inc\lib_ranging.h)(0x668D7167)
I (include\board\board.h)(0x66A1AE96)
I (include\drivers\mk_gpio.h)(0x668D7165)
I (include\drivers\mk_io.h)(0x668D7165)
F (.\include\src\uwb_examples\uwb_simple_example\simple_ds_twr_resp_sts\simple_ds_twr_resp_sts.c)(0x668D7168)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/simple_ds_twr_resp_sts.o -MD)
I (include\drivers\mk_trace.h)(0x668D7165)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\drivers\mk_uwb.h)(0x66A1FA40)
I (include\drivers\mk_mac.h)(0x668D7166)
I (include\drivers\mk_phy.h)(0x668D7166)
I (include\drivers\mk_misc.h)(0x668D7165)
I (include\drivers\mk_power.h)(0x668D7165)
I (include\drivers\mk_sleep_timer.h)(0x668D7165)
I (include\components\algo\inc\lib_ranging.h)(0x668D7167)
I (include\components\algo\inc\lib_aoa.h)(0x668D7167)
I (include\board\board.h)(0x66A1AE96)
I (include\drivers\mk_gpio.h)(0x668D7165)
I (include\drivers\mk_io.h)(0x668D7165)
F (.\include\src\uwb_examples\uwb_simple_example\simple_rx\simple_rx.c)(0x668D7168)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/simple_rx.o -MD)
I (include\drivers\mk_trace.h)(0x668D7165)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\drivers\mk_uwb.h)(0x66A1FA40)
I (include\drivers\mk_mac.h)(0x668D7166)
I (include\drivers\mk_phy.h)(0x668D7166)
I (include\drivers\mk_misc.h)(0x668D7165)
I (include\drivers\mk_power.h)(0x668D7165)
I (include\board\board.h)(0x66A1AE96)
I (include\drivers\mk_gpio.h)(0x668D7165)
I (include\drivers\mk_io.h)(0x668D7165)
F (.\include\src\uwb_examples\uwb_simple_example\simple_tx\simple_tx.c)(0x668D7168)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/simple_tx.o -MD)
I (include\drivers\mk_trace.h)(0x668D7165)
I (include\drivers\mk_common.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stddef.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (include\devices\MK800X\Include\MK800X.h)(0x668D7165)
I (include\CMSIS\Include\core_cm0.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_version.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_compiler.h)(0x668D7165)
I (include\CMSIS\Include\cmsis_armclang.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_compat.h)(0x5E0CC2EC)
I (d:\Keil_v5\ARM\ARMCLANG\include\arm_acle.h)(0x5E0CC318)
I (include\devices\MK800X\Include\system_MK800X.h)(0x668D7165)
I (..\user_config.h)(0x66A6FFC4)
I (include\drivers\mk_uart.h)(0x66A1A5A8)
I (include\drivers\mk_dma.h)(0x66A1A50C)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (include\drivers\mk_uwb.h)(0x66A1FA40)
I (include\drivers\mk_mac.h)(0x668D7166)
I (include\drivers\mk_phy.h)(0x668D7166)
I (include\drivers\mk_misc.h)(0x668D7165)
I (include\drivers\mk_power.h)(0x668D7165)
I (include\board\board.h)(0x66A1AE96)
I (include\drivers\mk_gpio.h)(0x668D7165)
I (include\drivers\mk_io.h)(0x668D7165)
F (.\include\components\crc\crc.c)(0x668D7167)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/components/crc -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/crc.o -MD)
I (include\components\crc\crc.h)(0x668D7167)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdlib.h)(0x5DDFFD6A)
F (.\include\components\libc\libc.c)(0x668D7165)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m0 -c -fno-rtti -funsigned-char -D__MICROLIB -gdwarf-3 -O2 -ffunction-sections -Weverything -Wno-packed -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ./include/components/libc -I .. -I ./include/board -I ./include/CMSIS/Include -I ./include/components/algo/inc -I ./include/components/crc -I ./include/components/libc -I ./include/components/wsf/include -I ./include/components/wsf/include/platform -I ./include/devices/MK800X/Include -I ./include/drivers -Wno-declaration-after-statement -Wno-double-promotion -Wno-extra-semi-stmt -Wno-gnu-zero-variadic-macro-arguments -Wno-padded -Wno-unused-parameter -I./RTE/_MK8000_Release -Id:/Users/xookk/AppData/Local/Arm/Packs/MKSEMI/MK800X_DFP/1.0.3/Device/Include -Id:/Keil_v5/ARM/CMSIS/Include -D__UVISION_VERSION="530" -D_RTE_ -DUWB_EN -o ./objects/libc.o -MD)
I (include\components\libc\libc_rom.h)(0x668D7165)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdint.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdbool.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdarg.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\string.h)(0x5DDFFD6C)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdio.h)(0x5DDFFD72)
I (d:\Keil_v5\ARM\ARMCLANG\include\stdlib.h)(0x5DDFFD6A)
I (d:\Keil_v5\ARM\ARMCLANG\include\math.h)(0x5DDFFD6C)
keil/Objects/wsf_assert.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
./objects/wsf_assert.o: \
  include\components\wsf\sources\port\baremetal\wsf_assert.c \
  include\components\wsf\include\wsf_assert.h \
  include\components\wsf\include\wsf_trace.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\components\wsf\include\wsf_types.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\components\wsf\include\wsf_trace.h \
  include\components\wsf\include\platform\pal_sys.h \
  include\components\wsf\include\platform\pal_types.h \
  include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h
keil/Objects/wsf_buf.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
./objects/wsf_buf.o: \
  include\components\wsf\sources\port\baremetal\wsf_buf.c \
  include\components\wsf\include\wsf_types.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\components\wsf\include\wsf_buf.h \
  include\components\wsf\include\wsf_types.h \
  include\components\wsf\include\wsf_assert.h \
  include\components\wsf\include\wsf_trace.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\components\wsf\include\wsf_cs.h \
  include\components\wsf\include\platform\pal_sys.h \
  include\components\wsf\include\platform\pal_types.h \
  include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\components\wsf\include\wsf_trace.h \
  include\components\wsf\include\wsf_heap.h \
  include\components\wsf\include\wsf_math.h \
  include\components\wsf\include\wsf_os.h \
  include\components\wsf\include\wsf_queue.h
keil/Objects/wsf_bufio.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
./objects/wsf_bufio.o: \
  include\components\wsf\sources\port\baremetal\wsf_bufio.c \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\components\wsf\include\wsf_types.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  include\components\wsf\include\wsf_bufio.h \
  include\components\wsf\include\wsf_types.h \
  include\components\wsf\include\wsf_cs.h \
  include\components\wsf\include\platform\pal_sys.h \
  include\components\wsf\include\platform\pal_types.h \
  include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\components\wsf\include\wsf_trace.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\components\wsf\include\wsf_os.h \
  include\components\wsf\include\wsf_queue.h \
  include\components\wsf\include\platform\pal_uart.h
keil/Objects/wsf_heap.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
./objects/wsf_heap.o: \
  include\components\wsf\sources\port\baremetal\wsf_heap.c \
  include\components\wsf\include\wsf_types.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\components\wsf\include\wsf_assert.h \
  include\components\wsf\include\wsf_trace.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\components\wsf\include\wsf_types.h \
  include\components\wsf\include\wsf_cs.h \
  include\components\wsf\include\platform\pal_sys.h \
  include\components\wsf\include\platform\pal_types.h \
  include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\components\wsf\include\wsf_trace.h \
  include\components\wsf\include\wsf_buf.h \
  include\components\wsf\include\wsf_math.h \
  include\components\wsf\include\wsf_os.h \
  include\components\wsf\include\wsf_queue.h \
  include\components\wsf\include\wsf_heap.h
keil/Objects/wsf_msg.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
./objects/wsf_msg.o: \
  include\components\wsf\sources\port\baremetal\wsf_msg.c \
  include\components\wsf\include\wsf_types.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\components\wsf\include\wsf_msg.h \
  include\components\wsf\include\wsf_queue.h \
  include\components\wsf\include\wsf_types.h \
  include\components\wsf\include\wsf_os.h \
  include\components\wsf\include\wsf_assert.h \
  include\components\wsf\include\wsf_trace.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\components\wsf\include\wsf_trace.h \
  include\components\wsf\include\wsf_buf.h \
  include\components\wsf\include\wsf_queue.h \
  include\components\wsf\include\wsf_os.h
keil/Objects/wsf_nvm.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
./objects/wsf_nvm.o: \
  include\components\wsf\sources\port\baremetal\wsf_nvm.c \
  include\components\wsf\include\wsf_types.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\components\wsf\include\wsf_nvm.h \
  include\components\wsf\include\wsf_types.h \
  include\components\wsf\include\wsf_assert.h \
  include\components\wsf\include\wsf_trace.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\components\wsf\include\platform\pal_flash.h \
  include\components\wsf\include\platform\pal_types.h \
  include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\components\crc\crc.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdlib.h
keil/Objects/wsf_os.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
./objects/wsf_os.o: \
  include\components\wsf\sources\port\baremetal\wsf_os.c \
  include\components\wsf\include\wsf_types.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\components\wsf\include\wsf_os.h \
  include\components\wsf\include\wsf_types.h \
  include\components\wsf\include\wsf_queue.h \
  include\components\wsf\include\wsf_assert.h \
  include\components\wsf\include\wsf_trace.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\components\wsf\include\wsf_trace.h \
  include\components\wsf\include\wsf_timer.h \
  include\components\wsf\include\wsf_os.h \
  include\components\wsf\include\wsf_queue.h \
  include\components\wsf\include\wsf_buf.h \
  include\components\wsf\include\wsf_msg.h \
  include\components\wsf\include\wsf_cs.h \
  include\components\wsf\include\platform\pal_sys.h \
  include\components\wsf\include\platform\pal_types.h \
  include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h
keil/Objects/wsf_queue.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
./objects/wsf_queue.o: \
  include\components\wsf\sources\port\baremetal\wsf_queue.c \
  include\components\wsf\include\wsf_types.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\components\wsf\include\wsf_queue.h \
  include\components\wsf\include\wsf_types.h \
  include\components\wsf\include\wsf_assert.h \
  include\components\wsf\include\wsf_trace.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\components\wsf\include\wsf_cs.h \
  include\components\wsf\include\platform\pal_sys.h \
  include\components\wsf\include\platform\pal_types.h \
  include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h
keil/Objects/wsf_timer.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
./objects/wsf_timer.o: \
  include\components\wsf\sources\port\baremetal\wsf_timer.c \
  include\components\wsf\include\wsf_types.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\components\wsf\include\wsf_queue.h \
  include\components\wsf\include\wsf_types.h \
  include\components\wsf\include\wsf_timer.h \
  include\components\wsf\include\wsf_os.h \
  include\components\wsf\include\wsf_queue.h \
  include\components\wsf\include\wsf_assert.h \
  include\components\wsf\include\wsf_trace.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\components\wsf\include\wsf_cs.h \
  include\components\wsf\include\platform\pal_sys.h \
  include\components\wsf\include\platform\pal_types.h \
  include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\components\wsf\include\wsf_trace.h
keil/Objects/wsf_trace.d
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
./objects/wsf_trace.o: \
  include\components\wsf\sources\port\baremetal\wsf_trace.c \
  include\components\wsf\include\wsf_types.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
  include\components\wsf\include\wsf_trace.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdarg.h \
  include\components\wsf\include\wsf_types.h \
  include\components\wsf\include\wsf_bufio.h \
  include\components\wsf\include\wsf_buf.h \
  include\components\wsf\include\platform\pal_sys.h \
  include\components\wsf\include\platform\pal_types.h \
  include\drivers\mk_common.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
  include\devices\MK800X\Include\MK800X.h \
  include\CMSIS\Include\core_cm0.h include\CMSIS\Include\cmsis_version.h \
  include\CMSIS\Include\cmsis_compiler.h \
  include\CMSIS\Include\cmsis_armclang.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
  d:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
  include\devices\MK800X\Include\system_MK800X.h ..\user_config.h \
  include\components\wsf\include\wsf_assert.h \
  include\components\wsf\include\wsf_trace.h \
  include\components\wsf\include\wsf_cs.h
keil/Output/uwb_simple_example.bin
Binary files differ
keil/dw_app_anchor.c
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
#include "dw_app_anchor.h"
#include "stdint.h"
#include <string.h>
#if defined (MK_SS_TWR_DW_INIT)
static float clockOffsetRatio;
static double rtd_init, rtd_resp;
static double tof,distance;
#define SPEED_OF_LIGHT 299702547
#define DWT_TIME_UNITS          (1.0/499.2e6/128.0) //!< = 15.65e-12 s
static uint32_t anc_pollrx[MAX_NEARBASE_NUM],anc_resptx[MAX_NEARBASE_NUM],tag_resprx[MAX_NEARBASE_NUM],tag_polltx[MAX_NEARBASE_NUM];
static int32_t anc_clockoffset[MAX_NEARBASE_NUM];
static int16_t anc_distoffset[MAX_NEARBASE_NUM];
extern uint8_t  taglist_keeptime[MAX_TAG_LIST_NUM]; //每个标签存活时间
extern uint16_t taglist_id[MAX_TAG_LIST_NUM],taglist_dist[MAX_TAG_LIST_NUM]; //标签距离和标签的ID
extern uint16_t  taglist_total_num,taglist_current_index;
extern uint8_t exsistbase_list[MAX_NEARBASE_NUM];
extern int32_t nearbase_distlist[MAX_NEARBASE_NUM];
void SetANCTimestap(uint8_t i,uint8_t* pollrx,uint8_t* resptx,uint32_t resprx,uint8_t* distoffset,int32_t anc_clockoffset_from_MK)  //写入时间戳信息
{
    memcpy(&anc_pollrx[i],pollrx,4);
    memcpy(&anc_resptx[i],resptx,4);
    memcpy(&tag_resprx[i],&resprx,4);
    memcpy(&anc_distoffset[i],distoffset,2);
    anc_clockoffset[i] = anc_clockoffset_from_MK;//MK8000修改
}
void CalculateDists(int64_t poll_tx_ts)
{
for(int i=0;i<MAX_NEARBASE_NUM;i++)
    {
        //rec_anc_signalpower[i] = exsistbase_list[i];
      if(exsistbase_list[i]==KEEP_TIMES)
      {
         // exsistbase_list[i]--;
#ifdef _UWB_4G
            clockOffsetRatio = anc_clockoffset[i] * (FREQ_OFFSET_MULTIPLIER * HERTZ_TO_PPM_MULTIPLIER_CHAN_2 / 1.0e6) ;
#else
            clockOffsetRatio = anc_clockoffset[i] * (FREQ_OFFSET_MULTIPLIER * HERTZ_TO_PPM_MULTIPLIER_CHAN_5 / 1.0e6) ;//MK8000修改
#endif
          rtd_init = tag_resprx[i] - (uint32_t)poll_tx_ts;
          rtd_resp = anc_resptx[i] - anc_pollrx[i];
          tof = ((rtd_init - rtd_resp * (1 - clockOffsetRatio)) / 2.0) * DWT_TIME_UNITS;
          distance = tof * SPEED_OF_LIGHT;
          if(distance>-10&&distance<1000)
          {
            nearbase_distlist[i]  = distance*100+anc_distoffset[i];
          }
      }else{
         // nearbase_distlist[i] = 0x1ffff;
      }
    }
}
#endif
keil/dw_app_anchor.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
#ifndef __DW_APP_H__
#define __DW_APP_H__
#include "stdint.h"
void SetANCTimestap(uint8_t i,uint8_t* pollrx,uint8_t* resptx,uint32_t resprx,uint8_t* distoffset,int32_t anc_clockoffset);
void CalculateDists(int64_t poll_tx_ts);
#define MBX_RESPONSE  0x21
#define MBX_POLL                               0x20
#define MBX_RESPONSE                           0x21
#define MBX_FINAL                           0x22
#define MBX_PRAAREPLY                       0x23
#define MBX_REG                               0x24
#define MESSAGE_TYPE_IDX  9
#define TAG_ID_IDX   5
#define GROUP_ID_IDX 0
#define ANCHOR_ID_IDX  1
#define MAX_NEARBASE_NUM 25
#define TAG_KEEPTIMES    30 //标签存活时间
#define KEEP_TIMES 5
#define TAG_NUM_IN_SYS                25
#define FZ_NEARBASENUM_INDEX    10
#define FZ_NEARBASEID_INDEX         11
#define DIST_IDX                             10
#define SEQUENCE_IDX                    3
#define BATTARY_IDX  4
//NEAR POLL
#define RESP_MSG_POLL_RX_TS_IDX  26
#define RESP_MSG_RESP_TX_TS_IDX  30
#define RESP_MSG_ANC_DISTOFFSET  34
#define TAG_KEEPTIMES    30 //标签存活时间
#define MAX_TAG_LIST_NUM 200 //同时通讯标签最大数量
#define FREQ_OFFSET_MULTIPLIER          (998.4e6/2.0/1024.0/131072.0)
#define FREQ_OFFSET_MULTIPLIER_110KB    (998.4e6/2.0/8192.0/131072.0)
#define HERTZ_TO_PPM_MULTIPLIER_CHAN_1     (-1.0e6/3494.4e6)
#define HERTZ_TO_PPM_MULTIPLIER_CHAN_2     (-1.0e6/3993.6e6)
#define HERTZ_TO_PPM_MULTIPLIER_CHAN_3     (-1.0e6/4492.8e6)
#define HERTZ_TO_PPM_MULTIPLIER_CHAN_5     (-1.0e6/6489.6e6)
#endif
keil/include/CMSIS/Include/cmsis_armcc.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,885 @@
/**************************************************************************//**
 * @file     cmsis_armcc.h
 * @brief    CMSIS compiler ARMCC (Arm Compiler 5) header file
 * @version  V5.2.1
 * @date     26. March 2020
 ******************************************************************************/
/*
 * Copyright (c) 2009-2020 Arm Limited. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the License); you may
 * not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#ifndef __CMSIS_ARMCC_H
#define __CMSIS_ARMCC_H
#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 400677)
  #error "Please use Arm Compiler Toolchain V4.0.677 or later!"
#endif
/* CMSIS compiler control architecture macros */
#if ((defined (__TARGET_ARCH_6_M  ) && (__TARGET_ARCH_6_M   == 1)) || \
     (defined (__TARGET_ARCH_6S_M ) && (__TARGET_ARCH_6S_M  == 1))   )
  #define __ARM_ARCH_6M__           1
#endif
#if (defined (__TARGET_ARCH_7_M ) && (__TARGET_ARCH_7_M  == 1))
  #define __ARM_ARCH_7M__           1
#endif
#if (defined (__TARGET_ARCH_7E_M) && (__TARGET_ARCH_7E_M == 1))
  #define __ARM_ARCH_7EM__          1
#endif
  /* __ARM_ARCH_8M_BASE__  not applicable */
  /* __ARM_ARCH_8M_MAIN__  not applicable */
  /* __ARM_ARCH_8_1M_MAIN__  not applicable */
/* CMSIS compiler control DSP macros */
#if ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     )
  #define __ARM_FEATURE_DSP         1
#endif
/* CMSIS compiler specific defines */
#ifndef   __ASM
  #define __ASM                                  __asm
#endif
#ifndef   __INLINE
  #define __INLINE                               __inline
#endif
#ifndef   __STATIC_INLINE
  #define __STATIC_INLINE                        static __inline
#endif
#ifndef   __STATIC_FORCEINLINE
  #define __STATIC_FORCEINLINE                   static __forceinline
#endif
#ifndef   __NO_RETURN
  #define __NO_RETURN                            __declspec(noreturn)
#endif
#ifndef   __USED
  #define __USED                                 __attribute__((used))
#endif
#ifndef   __WEAK
  #define __WEAK                                 __attribute__((weak))
#endif
#ifndef   __PACKED
  #define __PACKED                               __attribute__((packed))
#endif
#ifndef   __PACKED_STRUCT
  #define __PACKED_STRUCT                        __packed struct
#endif
#ifndef   __PACKED_UNION
  #define __PACKED_UNION                         __packed union
#endif
#ifndef   __UNALIGNED_UINT32        /* deprecated */
  #define __UNALIGNED_UINT32(x)                  (*((__packed uint32_t *)(x)))
#endif
#ifndef   __UNALIGNED_UINT16_WRITE
  #define __UNALIGNED_UINT16_WRITE(addr, val)    ((*((__packed uint16_t *)(addr))) = (val))
#endif
#ifndef   __UNALIGNED_UINT16_READ
  #define __UNALIGNED_UINT16_READ(addr)          (*((const __packed uint16_t *)(addr)))
#endif
#ifndef   __UNALIGNED_UINT32_WRITE
  #define __UNALIGNED_UINT32_WRITE(addr, val)    ((*((__packed uint32_t *)(addr))) = (val))
#endif
#ifndef   __UNALIGNED_UINT32_READ
  #define __UNALIGNED_UINT32_READ(addr)          (*((const __packed uint32_t *)(addr)))
#endif
#ifndef   __ALIGNED
  #define __ALIGNED(x)                           __attribute__((aligned(x)))
#endif
#ifndef   __RESTRICT
  #define __RESTRICT                             __restrict
#endif
#ifndef   __COMPILER_BARRIER
  #define __COMPILER_BARRIER()                   __memory_changed()
#endif
/* #########################  Startup and Lowlevel Init  ######################## */
#ifndef __PROGRAM_START
#define __PROGRAM_START           __main
#endif
#ifndef __INITIAL_SP
#define __INITIAL_SP              Image$$ARM_LIB_STACK$$ZI$$Limit
#endif
#ifndef __STACK_LIMIT
#define __STACK_LIMIT             Image$$ARM_LIB_STACK$$ZI$$Base
#endif
#ifndef __VECTOR_TABLE
#define __VECTOR_TABLE            __Vectors
#endif
#ifndef __VECTOR_TABLE_ATTRIBUTE
#define __VECTOR_TABLE_ATTRIBUTE  __attribute__((used, section("RESET")))
#endif
/* ###########################  Core Function Access  ########################### */
/** \ingroup  CMSIS_Core_FunctionInterface
    \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions
  @{
 */
/**
  \brief   Enable IRQ Interrupts
  \details Enables IRQ interrupts by clearing the I-bit in the CPSR.
           Can only be executed in Privileged modes.
 */
/* intrinsic void __enable_irq();     */
/**
  \brief   Disable IRQ Interrupts
  \details Disables IRQ interrupts by setting the I-bit in the CPSR.
           Can only be executed in Privileged modes.
 */
/* intrinsic void __disable_irq();    */
/**
  \brief   Get Control Register
  \details Returns the content of the Control Register.
  \return               Control Register value
 */
__STATIC_INLINE uint32_t __get_CONTROL(void)
{
  register uint32_t __regControl         __ASM("control");
  return(__regControl);
}
/**
  \brief   Set Control Register
  \details Writes the given value to the Control Register.
  \param [in]    control  Control Register value to set
 */
__STATIC_INLINE void __set_CONTROL(uint32_t control)
{
  register uint32_t __regControl         __ASM("control");
  __regControl = control;
}
/**
  \brief   Get IPSR Register
  \details Returns the content of the IPSR Register.
  \return               IPSR Register value
 */
__STATIC_INLINE uint32_t __get_IPSR(void)
{
  register uint32_t __regIPSR          __ASM("ipsr");
  return(__regIPSR);
}
/**
  \brief   Get APSR Register
  \details Returns the content of the APSR Register.
  \return               APSR Register value
 */
__STATIC_INLINE uint32_t __get_APSR(void)
{
  register uint32_t __regAPSR          __ASM("apsr");
  return(__regAPSR);
}
/**
  \brief   Get xPSR Register
  \details Returns the content of the xPSR Register.
  \return               xPSR Register value
 */
__STATIC_INLINE uint32_t __get_xPSR(void)
{
  register uint32_t __regXPSR          __ASM("xpsr");
  return(__regXPSR);
}
/**
  \brief   Get Process Stack Pointer
  \details Returns the current value of the Process Stack Pointer (PSP).
  \return               PSP Register value
 */
__STATIC_INLINE uint32_t __get_PSP(void)
{
  register uint32_t __regProcessStackPointer  __ASM("psp");
  return(__regProcessStackPointer);
}
/**
  \brief   Set Process Stack Pointer
  \details Assigns the given value to the Process Stack Pointer (PSP).
  \param [in]    topOfProcStack  Process Stack Pointer value to set
 */
__STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)
{
  register uint32_t __regProcessStackPointer  __ASM("psp");
  __regProcessStackPointer = topOfProcStack;
}
/**
  \brief   Get Main Stack Pointer
  \details Returns the current value of the Main Stack Pointer (MSP).
  \return               MSP Register value
 */
__STATIC_INLINE uint32_t __get_MSP(void)
{
  register uint32_t __regMainStackPointer     __ASM("msp");
  return(__regMainStackPointer);
}
/**
  \brief   Set Main Stack Pointer
  \details Assigns the given value to the Main Stack Pointer (MSP).
  \param [in]    topOfMainStack  Main Stack Pointer value to set
 */
__STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)
{
  register uint32_t __regMainStackPointer     __ASM("msp");
  __regMainStackPointer = topOfMainStack;
}
/**
  \brief   Get Priority Mask
  \details Returns the current state of the priority mask bit from the Priority Mask Register.
  \return               Priority Mask value
 */
__STATIC_INLINE uint32_t __get_PRIMASK(void)
{
  register uint32_t __regPriMask         __ASM("primask");
  return(__regPriMask);
}
/**
  \brief   Set Priority Mask
  \details Assigns the given value to the Priority Mask Register.
  \param [in]    priMask  Priority Mask
 */
__STATIC_INLINE void __set_PRIMASK(uint32_t priMask)
{
  register uint32_t __regPriMask         __ASM("primask");
  __regPriMask = (priMask);
}
#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__  == 1)) || \
     (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     )
/**
  \brief   Enable FIQ
  \details Enables FIQ interrupts by clearing the F-bit in the CPSR.
           Can only be executed in Privileged modes.
 */
#define __enable_fault_irq                __enable_fiq
/**
  \brief   Disable FIQ
  \details Disables FIQ interrupts by setting the F-bit in the CPSR.
           Can only be executed in Privileged modes.
 */
#define __disable_fault_irq               __disable_fiq
/**
  \brief   Get Base Priority
  \details Returns the current value of the Base Priority register.
  \return               Base Priority register value
 */
__STATIC_INLINE uint32_t  __get_BASEPRI(void)
{
  register uint32_t __regBasePri         __ASM("basepri");
  return(__regBasePri);
}
/**
  \brief   Set Base Priority
  \details Assigns the given value to the Base Priority register.
  \param [in]    basePri  Base Priority value to set
 */
__STATIC_INLINE void __set_BASEPRI(uint32_t basePri)
{
  register uint32_t __regBasePri         __ASM("basepri");
  __regBasePri = (basePri & 0xFFU);
}
/**
  \brief   Set Base Priority with condition
  \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled,
           or the new value increases the BASEPRI priority level.
  \param [in]    basePri  Base Priority value to set
 */
__STATIC_INLINE void __set_BASEPRI_MAX(uint32_t basePri)
{
  register uint32_t __regBasePriMax      __ASM("basepri_max");
  __regBasePriMax = (basePri & 0xFFU);
}
/**
  \brief   Get Fault Mask
  \details Returns the current value of the Fault Mask register.
  \return               Fault Mask register value
 */
__STATIC_INLINE uint32_t __get_FAULTMASK(void)
{
  register uint32_t __regFaultMask       __ASM("faultmask");
  return(__regFaultMask);
}
/**
  \brief   Set Fault Mask
  \details Assigns the given value to the Fault Mask register.
  \param [in]    faultMask  Fault Mask value to set
 */
__STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)
{
  register uint32_t __regFaultMask       __ASM("faultmask");
  __regFaultMask = (faultMask & (uint32_t)1U);
}
#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__  == 1)) || \
           (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     ) */
/**
  \brief   Get FPSCR
  \details Returns the current value of the Floating Point Status/Control register.
  \return               Floating Point Status/Control register value
 */
__STATIC_INLINE uint32_t __get_FPSCR(void)
{
#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \
     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )
  register uint32_t __regfpscr         __ASM("fpscr");
  return(__regfpscr);
#else
   return(0U);
#endif
}
/**
  \brief   Set FPSCR
  \details Assigns the given value to the Floating Point Status/Control register.
  \param [in]    fpscr  Floating Point Status/Control value to set
 */
__STATIC_INLINE void __set_FPSCR(uint32_t fpscr)
{
#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \
     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )
  register uint32_t __regfpscr         __ASM("fpscr");
  __regfpscr = (fpscr);
#else
  (void)fpscr;
#endif
}
/*@} end of CMSIS_Core_RegAccFunctions */
/* ##########################  Core Instruction Access  ######################### */
/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface
  Access to dedicated instructions
  @{
*/
/**
  \brief   No Operation
  \details No Operation does nothing. This instruction can be used for code alignment purposes.
 */
#define __NOP                             __nop
/**
  \brief   Wait For Interrupt
  \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs.
 */
#define __WFI                             __wfi
/**
  \brief   Wait For Event
  \details Wait For Event is a hint instruction that permits the processor to enter
           a low-power state until one of a number of events occurs.
 */
#define __WFE                             __wfe
/**
  \brief   Send Event
  \details Send Event is a hint instruction. It causes an event to be signaled to the CPU.
 */
#define __SEV                             __sev
/**
  \brief   Instruction Synchronization Barrier
  \details Instruction Synchronization Barrier flushes the pipeline in the processor,
           so that all instructions following the ISB are fetched from cache or memory,
           after the instruction has been completed.
 */
#define __ISB()                           __isb(0xF)
/**
  \brief   Data Synchronization Barrier
  \details Acts as a special kind of Data Memory Barrier.
           It completes when all explicit memory accesses before this instruction complete.
 */
#define __DSB()                           __dsb(0xF)
/**
  \brief   Data Memory Barrier
  \details Ensures the apparent order of the explicit memory operations before
           and after the instruction, without ensuring their completion.
 */
#define __DMB()                           __dmb(0xF)
/**
  \brief   Reverse byte order (32 bit)
  \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412.
  \param [in]    value  Value to reverse
  \return               Reversed value
 */
#define __REV                             __rev
/**
  \brief   Reverse byte order (16 bit)
  \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856.
  \param [in]    value  Value to reverse
  \return               Reversed value
 */
#ifndef __NO_EMBEDDED_ASM
__attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value)
{
  rev16 r0, r0
  bx lr
}
#endif
/**
  \brief   Reverse byte order (16 bit)
  \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000.
  \param [in]    value  Value to reverse
  \return               Reversed value
 */
#ifndef __NO_EMBEDDED_ASM
__attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int16_t __REVSH(int16_t value)
{
  revsh r0, r0
  bx lr
}
#endif
/**
  \brief   Rotate Right in unsigned value (32 bit)
  \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.
  \param [in]    op1  Value to rotate
  \param [in]    op2  Number of Bits to rotate
  \return               Rotated value
 */
#define __ROR                             __ror
/**
  \brief   Breakpoint
  \details Causes the processor to enter Debug state.
           Debug tools can use this to investigate system state when the instruction at a particular address is reached.
  \param [in]    value  is ignored by the processor.
                 If required, a debugger can use it to store additional information about the breakpoint.
 */
#define __BKPT(value)                       __breakpoint(value)
/**
  \brief   Reverse bit order of value
  \details Reverses the bit order of the given value.
  \param [in]    value  Value to reverse
  \return               Reversed value
 */
#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__  == 1)) || \
     (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     )
  #define __RBIT                          __rbit
#else
__attribute__((always_inline)) __STATIC_INLINE uint32_t __RBIT(uint32_t value)
{
  uint32_t result;
  uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */
  result = value;                      /* r will be reversed bits of v; first get LSB of v */
  for (value >>= 1U; value != 0U; value >>= 1U)
  {
    result <<= 1U;
    result |= value & 1U;
    s--;
  }
  result <<= s;                        /* shift when v's highest bits are zero */
  return result;
}
#endif
/**
  \brief   Count leading zeros
  \details Counts the number of leading zeros of a data value.
  \param [in]  value  Value to count the leading zeros
  \return             number of leading zeros in value
 */
#define __CLZ                             __clz
#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__  == 1)) || \
     (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     )
/**
  \brief   LDR Exclusive (8 bit)
  \details Executes a exclusive LDR instruction for 8 bit value.
  \param [in]    ptr  Pointer to data
  \return             value of type uint8_t at (*ptr)
 */
#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)
  #define __LDREXB(ptr)                                                        ((uint8_t ) __ldrex(ptr))
#else
  #define __LDREXB(ptr)          _Pragma("push") _Pragma("diag_suppress 3731") ((uint8_t ) __ldrex(ptr))  _Pragma("pop")
#endif
/**
  \brief   LDR Exclusive (16 bit)
  \details Executes a exclusive LDR instruction for 16 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint16_t at (*ptr)
 */
#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)
  #define __LDREXH(ptr)                                                        ((uint16_t) __ldrex(ptr))
#else
  #define __LDREXH(ptr)          _Pragma("push") _Pragma("diag_suppress 3731") ((uint16_t) __ldrex(ptr))  _Pragma("pop")
#endif
/**
  \brief   LDR Exclusive (32 bit)
  \details Executes a exclusive LDR instruction for 32 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint32_t at (*ptr)
 */
#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)
  #define __LDREXW(ptr)                                                        ((uint32_t ) __ldrex(ptr))
#else
  #define __LDREXW(ptr)          _Pragma("push") _Pragma("diag_suppress 3731") ((uint32_t ) __ldrex(ptr))  _Pragma("pop")
#endif
/**
  \brief   STR Exclusive (8 bit)
  \details Executes a exclusive STR instruction for 8 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
  \return          0  Function succeeded
  \return          1  Function failed
 */
#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)
  #define __STREXB(value, ptr)                                                 __strex(value, ptr)
#else
  #define __STREXB(value, ptr)   _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr)        _Pragma("pop")
#endif
/**
  \brief   STR Exclusive (16 bit)
  \details Executes a exclusive STR instruction for 16 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
  \return          0  Function succeeded
  \return          1  Function failed
 */
#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)
  #define __STREXH(value, ptr)                                                 __strex(value, ptr)
#else
  #define __STREXH(value, ptr)   _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr)        _Pragma("pop")
#endif
/**
  \brief   STR Exclusive (32 bit)
  \details Executes a exclusive STR instruction for 32 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
  \return          0  Function succeeded
  \return          1  Function failed
 */
#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020)
  #define __STREXW(value, ptr)                                                 __strex(value, ptr)
#else
  #define __STREXW(value, ptr)   _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr)        _Pragma("pop")
#endif
/**
  \brief   Remove the exclusive lock
  \details Removes the exclusive lock which is created by LDREX.
 */
#define __CLREX                           __clrex
/**
  \brief   Signed Saturate
  \details Saturates a signed value.
  \param [in]  value  Value to be saturated
  \param [in]    sat  Bit position to saturate to (1..32)
  \return             Saturated value
 */
#define __SSAT                            __ssat
/**
  \brief   Unsigned Saturate
  \details Saturates an unsigned value.
  \param [in]  value  Value to be saturated
  \param [in]    sat  Bit position to saturate to (0..31)
  \return             Saturated value
 */
#define __USAT                            __usat
/**
  \brief   Rotate Right with Extend (32 bit)
  \details Moves each bit of a bitstring right by one bit.
           The carry input is shifted in at the left end of the bitstring.
  \param [in]    value  Value to rotate
  \return               Rotated value
 */
#ifndef __NO_EMBEDDED_ASM
__attribute__((section(".rrx_text"))) __STATIC_INLINE __ASM uint32_t __RRX(uint32_t value)
{
  rrx r0, r0
  bx lr
}
#endif
/**
  \brief   LDRT Unprivileged (8 bit)
  \details Executes a Unprivileged LDRT instruction for 8 bit value.
  \param [in]    ptr  Pointer to data
  \return             value of type uint8_t at (*ptr)
 */
#define __LDRBT(ptr)                      ((uint8_t )  __ldrt(ptr))
/**
  \brief   LDRT Unprivileged (16 bit)
  \details Executes a Unprivileged LDRT instruction for 16 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint16_t at (*ptr)
 */
#define __LDRHT(ptr)                      ((uint16_t)  __ldrt(ptr))
/**
  \brief   LDRT Unprivileged (32 bit)
  \details Executes a Unprivileged LDRT instruction for 32 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint32_t at (*ptr)
 */
#define __LDRT(ptr)                       ((uint32_t ) __ldrt(ptr))
/**
  \brief   STRT Unprivileged (8 bit)
  \details Executes a Unprivileged STRT instruction for 8 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
 */
#define __STRBT(value, ptr)               __strt(value, ptr)
/**
  \brief   STRT Unprivileged (16 bit)
  \details Executes a Unprivileged STRT instruction for 16 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
 */
#define __STRHT(value, ptr)               __strt(value, ptr)
/**
  \brief   STRT Unprivileged (32 bit)
  \details Executes a Unprivileged STRT instruction for 32 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
 */
#define __STRT(value, ptr)                __strt(value, ptr)
#else  /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__  == 1)) || \
           (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     ) */
/**
  \brief   Signed Saturate
  \details Saturates a signed value.
  \param [in]  value  Value to be saturated
  \param [in]    sat  Bit position to saturate to (1..32)
  \return             Saturated value
 */
__attribute__((always_inline)) __STATIC_INLINE int32_t __SSAT(int32_t val, uint32_t sat)
{
  if ((sat >= 1U) && (sat <= 32U))
  {
    const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U);
    const int32_t min = -1 - max ;
    if (val > max)
    {
      return max;
    }
    else if (val < min)
    {
      return min;
    }
  }
  return val;
}
/**
  \brief   Unsigned Saturate
  \details Saturates an unsigned value.
  \param [in]  value  Value to be saturated
  \param [in]    sat  Bit position to saturate to (0..31)
  \return             Saturated value
 */
__attribute__((always_inline)) __STATIC_INLINE uint32_t __USAT(int32_t val, uint32_t sat)
{
  if (sat <= 31U)
  {
    const uint32_t max = ((1U << sat) - 1U);
    if (val > (int32_t)max)
    {
      return max;
    }
    else if (val < 0)
    {
      return 0U;
    }
  }
  return (uint32_t)val;
}
#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__  == 1)) || \
           (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     ) */
/*@}*/ /* end of group CMSIS_Core_InstructionInterface */
/* ###################  Compiler specific Intrinsics  ########################### */
/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics
  Access to dedicated SIMD instructions
  @{
*/
#if ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     )
#define __SADD8                           __sadd8
#define __QADD8                           __qadd8
#define __SHADD8                          __shadd8
#define __UADD8                           __uadd8
#define __UQADD8                          __uqadd8
#define __UHADD8                          __uhadd8
#define __SSUB8                           __ssub8
#define __QSUB8                           __qsub8
#define __SHSUB8                          __shsub8
#define __USUB8                           __usub8
#define __UQSUB8                          __uqsub8
#define __UHSUB8                          __uhsub8
#define __SADD16                          __sadd16
#define __QADD16                          __qadd16
#define __SHADD16                         __shadd16
#define __UADD16                          __uadd16
#define __UQADD16                         __uqadd16
#define __UHADD16                         __uhadd16
#define __SSUB16                          __ssub16
#define __QSUB16                          __qsub16
#define __SHSUB16                         __shsub16
#define __USUB16                          __usub16
#define __UQSUB16                         __uqsub16
#define __UHSUB16                         __uhsub16
#define __SASX                            __sasx
#define __QASX                            __qasx
#define __SHASX                           __shasx
#define __UASX                            __uasx
#define __UQASX                           __uqasx
#define __UHASX                           __uhasx
#define __SSAX                            __ssax
#define __QSAX                            __qsax
#define __SHSAX                           __shsax
#define __USAX                            __usax
#define __UQSAX                           __uqsax
#define __UHSAX                           __uhsax
#define __USAD8                           __usad8
#define __USADA8                          __usada8
#define __SSAT16                          __ssat16
#define __USAT16                          __usat16
#define __UXTB16                          __uxtb16
#define __UXTAB16                         __uxtab16
#define __SXTB16                          __sxtb16
#define __SXTAB16                         __sxtab16
#define __SMUAD                           __smuad
#define __SMUADX                          __smuadx
#define __SMLAD                           __smlad
#define __SMLADX                          __smladx
#define __SMLALD                          __smlald
#define __SMLALDX                         __smlaldx
#define __SMUSD                           __smusd
#define __SMUSDX                          __smusdx
#define __SMLSD                           __smlsd
#define __SMLSDX                          __smlsdx
#define __SMLSLD                          __smlsld
#define __SMLSLDX                         __smlsldx
#define __SEL                             __sel
#define __QADD                            __qadd
#define __QSUB                            __qsub
#define __PKHBT(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0x0000FFFFUL) |  \
                                           ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL)  )
#define __PKHTB(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0xFFFF0000UL) |  \
                                           ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL)  )
#define __SMMLA(ARG1,ARG2,ARG3)          ( (int32_t)((((int64_t)(ARG1) * (ARG2)) + \
                                                      ((int64_t)(ARG3) << 32U)     ) >> 32U))
#define __SXTB16_RORn(ARG1, ARG2)        __SXTB16(__ROR(ARG1, ARG2))
#endif /* ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1))     ) */
/*@} end of group CMSIS_SIMD_intrinsics */
#endif /* __CMSIS_ARMCC_H */
keil/include/CMSIS/Include/cmsis_armclang.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1467 @@
/**************************************************************************//**
 * @file     cmsis_armclang.h
 * @brief    CMSIS compiler armclang (Arm Compiler 6) header file
 * @version  V5.3.1
 * @date     26. March 2020
 ******************************************************************************/
/*
 * Copyright (c) 2009-2020 Arm Limited. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the License); you may
 * not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*lint -esym(9058, IRQn)*/ /* disable MISRA 2012 Rule 2.4 for IRQn */
#ifndef __CMSIS_ARMCLANG_H
#define __CMSIS_ARMCLANG_H
#pragma clang system_header   /* treat file as system include file */
#ifndef __ARM_COMPAT_H
#include <arm_compat.h>    /* Compatibility header for Arm Compiler 5 intrinsics */
#endif
/* CMSIS compiler specific defines */
#ifndef   __ASM
  #define __ASM                                  __asm
#endif
#ifndef   __INLINE
  #define __INLINE                               __inline
#endif
#ifndef   __STATIC_INLINE
  #define __STATIC_INLINE                        static __inline
#endif
#ifndef   __STATIC_FORCEINLINE
  #define __STATIC_FORCEINLINE                   __attribute__((always_inline)) static __inline
#endif
#ifndef   __NO_RETURN
  #define __NO_RETURN                            __attribute__((__noreturn__))
#endif
#ifndef   __USED
  #define __USED                                 __attribute__((used))
#endif
#ifndef   __WEAK
  #define __WEAK                                 __attribute__((weak))
#endif
#ifndef   __PACKED
  #define __PACKED                               __attribute__((packed, aligned(1)))
#endif
#ifndef   __PACKED_STRUCT
  #define __PACKED_STRUCT                        struct __attribute__((packed, aligned(1)))
#endif
#ifndef   __PACKED_UNION
  #define __PACKED_UNION                         union __attribute__((packed, aligned(1)))
#endif
#ifndef   __UNALIGNED_UINT32        /* deprecated */
  #pragma clang diagnostic push
  #pragma clang diagnostic ignored "-Wpacked"
/*lint -esym(9058, T_UINT32)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32 */
  struct __attribute__((packed)) T_UINT32 { uint32_t v; };
  #pragma clang diagnostic pop
  #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)
#endif
#ifndef   __UNALIGNED_UINT16_WRITE
  #pragma clang diagnostic push
  #pragma clang diagnostic ignored "-Wpacked"
/*lint -esym(9058, T_UINT16_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_WRITE */
  __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };
  #pragma clang diagnostic pop
  #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))
#endif
#ifndef   __UNALIGNED_UINT16_READ
  #pragma clang diagnostic push
  #pragma clang diagnostic ignored "-Wpacked"
/*lint -esym(9058, T_UINT16_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_READ */
  __PACKED_STRUCT T_UINT16_READ { uint16_t v; };
  #pragma clang diagnostic pop
  #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)
#endif
#ifndef   __UNALIGNED_UINT32_WRITE
  #pragma clang diagnostic push
  #pragma clang diagnostic ignored "-Wpacked"
/*lint -esym(9058, T_UINT32_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_WRITE */
  __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };
  #pragma clang diagnostic pop
  #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))
#endif
#ifndef   __UNALIGNED_UINT32_READ
  #pragma clang diagnostic push
  #pragma clang diagnostic ignored "-Wpacked"
/*lint -esym(9058, T_UINT32_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_READ */
  __PACKED_STRUCT T_UINT32_READ { uint32_t v; };
  #pragma clang diagnostic pop
  #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)
#endif
#ifndef   __ALIGNED
  #define __ALIGNED(x)                           __attribute__((aligned(x)))
#endif
#ifndef   __RESTRICT
  #define __RESTRICT                             __restrict
#endif
#ifndef   __COMPILER_BARRIER
  #define __COMPILER_BARRIER()                   __ASM volatile("":::"memory")
#endif
/* #########################  Startup and Lowlevel Init  ######################## */
#ifndef __PROGRAM_START
#define __PROGRAM_START           __main
#endif
#ifndef __INITIAL_SP
#define __INITIAL_SP              Image$$ARM_LIB_STACK$$ZI$$Limit
#endif
#ifndef __STACK_LIMIT
#define __STACK_LIMIT             Image$$ARM_LIB_STACK$$ZI$$Base
#endif
#ifndef __VECTOR_TABLE
#define __VECTOR_TABLE            __Vectors
#endif
#ifndef __VECTOR_TABLE_ATTRIBUTE
#define __VECTOR_TABLE_ATTRIBUTE  __attribute__((used, section("RESET")))
#endif
/* ###########################  Core Function Access  ########################### */
/** \ingroup  CMSIS_Core_FunctionInterface
    \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions
  @{
 */
/**
  \brief   Enable IRQ Interrupts
  \details Enables IRQ interrupts by clearing the I-bit in the CPSR.
           Can only be executed in Privileged modes.
 */
/* intrinsic void __enable_irq();  see arm_compat.h */
/**
  \brief   Disable IRQ Interrupts
  \details Disables IRQ interrupts by setting the I-bit in the CPSR.
           Can only be executed in Privileged modes.
 */
/* intrinsic void __disable_irq();  see arm_compat.h */
/**
  \brief   Get Control Register
  \details Returns the content of the Control Register.
  \return               Control Register value
 */
__STATIC_FORCEINLINE uint32_t __get_CONTROL(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, control" : "=r" (result) );
  return(result);
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Get Control Register (non-secure)
  \details Returns the content of the non-secure Control Register when in secure mode.
  \return               non-secure Control Register value
 */
__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, control_ns" : "=r" (result) );
  return(result);
}
#endif
/**
  \brief   Set Control Register
  \details Writes the given value to the Control Register.
  \param [in]    control  Control Register value to set
 */
__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control)
{
  __ASM volatile ("MSR control, %0" : : "r" (control) : "memory");
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Set Control Register (non-secure)
  \details Writes the given value to the non-secure Control Register when in secure state.
  \param [in]    control  Control Register value to set
 */
__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control)
{
  __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory");
}
#endif
/**
  \brief   Get IPSR Register
  \details Returns the content of the IPSR Register.
  \return               IPSR Register value
 */
__STATIC_FORCEINLINE uint32_t __get_IPSR(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, ipsr" : "=r" (result) );
  return(result);
}
/**
  \brief   Get APSR Register
  \details Returns the content of the APSR Register.
  \return               APSR Register value
 */
__STATIC_FORCEINLINE uint32_t __get_APSR(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, apsr" : "=r" (result) );
  return(result);
}
/**
  \brief   Get xPSR Register
  \details Returns the content of the xPSR Register.
  \return               xPSR Register value
 */
__STATIC_FORCEINLINE uint32_t __get_xPSR(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, xpsr" : "=r" (result) );
  return(result);
}
/**
  \brief   Get Process Stack Pointer
  \details Returns the current value of the Process Stack Pointer (PSP).
  \return               PSP Register value
 */
__STATIC_FORCEINLINE uint32_t __get_PSP(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, psp"  : "=r" (result) );
  return(result);
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Get Process Stack Pointer (non-secure)
  \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state.
  \return               PSP Register value
 */
__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, psp_ns"  : "=r" (result) );
  return(result);
}
#endif
/**
  \brief   Set Process Stack Pointer
  \details Assigns the given value to the Process Stack Pointer (PSP).
  \param [in]    topOfProcStack  Process Stack Pointer value to set
 */
__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack)
{
  __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : );
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Set Process Stack Pointer (non-secure)
  \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state.
  \param [in]    topOfProcStack  Process Stack Pointer value to set
 */
__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack)
{
  __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : );
}
#endif
/**
  \brief   Get Main Stack Pointer
  \details Returns the current value of the Main Stack Pointer (MSP).
  \return               MSP Register value
 */
__STATIC_FORCEINLINE uint32_t __get_MSP(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, msp" : "=r" (result) );
  return(result);
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Get Main Stack Pointer (non-secure)
  \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state.
  \return               MSP Register value
 */
__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, msp_ns" : "=r" (result) );
  return(result);
}
#endif
/**
  \brief   Set Main Stack Pointer
  \details Assigns the given value to the Main Stack Pointer (MSP).
  \param [in]    topOfMainStack  Main Stack Pointer value to set
 */
__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack)
{
  __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : );
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Set Main Stack Pointer (non-secure)
  \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state.
  \param [in]    topOfMainStack  Main Stack Pointer value to set
 */
__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack)
{
  __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : );
}
#endif
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Get Stack Pointer (non-secure)
  \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state.
  \return               SP Register value
 */
__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, sp_ns" : "=r" (result) );
  return(result);
}
/**
  \brief   Set Stack Pointer (non-secure)
  \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state.
  \param [in]    topOfStack  Stack Pointer value to set
 */
__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack)
{
  __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : );
}
#endif
/**
  \brief   Get Priority Mask
  \details Returns the current state of the priority mask bit from the Priority Mask Register.
  \return               Priority Mask value
 */
__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, primask" : "=r" (result) );
  return(result);
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Get Priority Mask (non-secure)
  \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state.
  \return               Priority Mask value
 */
__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, primask_ns" : "=r" (result) );
  return(result);
}
#endif
/**
  \brief   Set Priority Mask
  \details Assigns the given value to the Priority Mask Register.
  \param [in]    priMask  Priority Mask
 */
__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask)
{
  __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory");
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Set Priority Mask (non-secure)
  \details Assigns the given value to the non-secure Priority Mask Register when in secure state.
  \param [in]    priMask  Priority Mask
 */
__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask)
{
  __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory");
}
#endif
#if ((defined (__ARM_ARCH_7M__       ) && (__ARM_ARCH_7M__        == 1)) || \
     (defined (__ARM_ARCH_7EM__      ) && (__ARM_ARCH_7EM__       == 1)) || \
     (defined (__ARM_ARCH_8M_MAIN__  ) && (__ARM_ARCH_8M_MAIN__   == 1)) || \
     (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1))     )
/**
  \brief   Enable FIQ
  \details Enables FIQ interrupts by clearing the F-bit in the CPSR.
           Can only be executed in Privileged modes.
 */
#define __enable_fault_irq                __enable_fiq   /* see arm_compat.h */
/**
  \brief   Disable FIQ
  \details Disables FIQ interrupts by setting the F-bit in the CPSR.
           Can only be executed in Privileged modes.
 */
#define __disable_fault_irq               __disable_fiq   /* see arm_compat.h */
/**
  \brief   Get Base Priority
  \details Returns the current value of the Base Priority register.
  \return               Base Priority register value
 */
__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, basepri" : "=r" (result) );
  return(result);
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Get Base Priority (non-secure)
  \details Returns the current value of the non-secure Base Priority register when in secure state.
  \return               Base Priority register value
 */
__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) );
  return(result);
}
#endif
/**
  \brief   Set Base Priority
  \details Assigns the given value to the Base Priority register.
  \param [in]    basePri  Base Priority value to set
 */
__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri)
{
  __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory");
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Set Base Priority (non-secure)
  \details Assigns the given value to the non-secure Base Priority register when in secure state.
  \param [in]    basePri  Base Priority value to set
 */
__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri)
{
  __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory");
}
#endif
/**
  \brief   Set Base Priority with condition
  \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled,
           or the new value increases the BASEPRI priority level.
  \param [in]    basePri  Base Priority value to set
 */
__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri)
{
  __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory");
}
/**
  \brief   Get Fault Mask
  \details Returns the current value of the Fault Mask register.
  \return               Fault Mask register value
 */
__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, faultmask" : "=r" (result) );
  return(result);
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Get Fault Mask (non-secure)
  \details Returns the current value of the non-secure Fault Mask register when in secure state.
  \return               Fault Mask register value
 */
__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) );
  return(result);
}
#endif
/**
  \brief   Set Fault Mask
  \details Assigns the given value to the Fault Mask register.
  \param [in]    faultMask  Fault Mask value to set
 */
__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask)
{
  __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory");
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Set Fault Mask (non-secure)
  \details Assigns the given value to the non-secure Fault Mask register when in secure state.
  \param [in]    faultMask  Fault Mask value to set
 */
__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask)
{
  __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory");
}
#endif
#endif /* ((defined (__ARM_ARCH_7M__       ) && (__ARM_ARCH_7M__        == 1)) || \
           (defined (__ARM_ARCH_7EM__      ) && (__ARM_ARCH_7EM__       == 1)) || \
           (defined (__ARM_ARCH_8M_MAIN__  ) && (__ARM_ARCH_8M_MAIN__   == 1)) || \
           (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1))     ) */
#if ((defined (__ARM_ARCH_8M_MAIN__  ) && (__ARM_ARCH_8M_MAIN__   == 1)) || \
     (defined (__ARM_ARCH_8M_BASE__  ) && (__ARM_ARCH_8M_BASE__   == 1)) || \
     (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1))     )
/**
  \brief   Get Process Stack Pointer Limit
  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
  Stack Pointer Limit register hence zero is returned always in non-secure
  mode.
  \details Returns the current value of the Process Stack Pointer Limit (PSPLIM).
  \return               PSPLIM Register value
 */
__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void)
{
#if (!((defined (__ARM_ARCH_8M_MAIN__   ) && (__ARM_ARCH_8M_MAIN__   == 1)) || \
       (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1))   ) && \
    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
    // without main extensions, the non-secure PSPLIM is RAZ/WI
  return 0U;
#else
  uint32_t result;
  __ASM volatile ("MRS %0, psplim"  : "=r" (result) );
  return result;
#endif
}
#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Get Process Stack Pointer Limit (non-secure)
  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
  Stack Pointer Limit register hence zero is returned always in non-secure
  mode.
  \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state.
  \return               PSPLIM Register value
 */
__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void)
{
#if (!((defined (__ARM_ARCH_8M_MAIN__   ) && (__ARM_ARCH_8M_MAIN__   == 1)) || \
       (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1))   ) )
  // without main extensions, the non-secure PSPLIM is RAZ/WI
  return 0U;
#else
  uint32_t result;
  __ASM volatile ("MRS %0, psplim_ns"  : "=r" (result) );
  return result;
#endif
}
#endif
/**
  \brief   Set Process Stack Pointer Limit
  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
  Stack Pointer Limit register hence the write is silently ignored in non-secure
  mode.
  \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM).
  \param [in]    ProcStackPtrLimit  Process Stack Pointer Limit value to set
 */
__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit)
{
#if (!((defined (__ARM_ARCH_8M_MAIN__   ) && (__ARM_ARCH_8M_MAIN__   == 1)) || \
       (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1))   ) && \
    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
  // without main extensions, the non-secure PSPLIM is RAZ/WI
  (void)ProcStackPtrLimit;
#else
  __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit));
#endif
}
#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))
/**
  \brief   Set Process Stack Pointer (non-secure)
  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
  Stack Pointer Limit register hence the write is silently ignored in non-secure
  mode.
  \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state.
  \param [in]    ProcStackPtrLimit  Process Stack Pointer Limit value to set
 */
__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit)
{
#if (!((defined (__ARM_ARCH_8M_MAIN__   ) && (__ARM_ARCH_8M_MAIN__   == 1)) || \
       (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1))   ) )
  // without main extensions, the non-secure PSPLIM is RAZ/WI
  (void)ProcStackPtrLimit;
#else
  __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit));
#endif
}
#endif
/**
  \brief   Get Main Stack Pointer Limit
  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
  Stack Pointer Limit register hence zero is returned always.
  \details Returns the current value of the Main Stack Pointer Limit (MSPLIM).
  \return               MSPLIM Register value
 */
__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void)
{
#if (!((defined (__ARM_ARCH_8M_MAIN__   ) && (__ARM_ARCH_8M_MAIN__   == 1)) || \
       (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1))   ) && \
    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
  // without main extensions, the non-secure MSPLIM is RAZ/WI
  return 0U;
#else
  uint32_t result;
  __ASM volatile ("MRS %0, msplim" : "=r" (result) );
  return result;
#endif
}
#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))
/**
  \brief   Get Main Stack Pointer Limit (non-secure)
  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
  Stack Pointer Limit register hence zero is returned always.
  \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state.
  \return               MSPLIM Register value
 */
__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void)
{
#if (!((defined (__ARM_ARCH_8M_MAIN__   ) && (__ARM_ARCH_8M_MAIN__   == 1)) || \
       (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1))   ) )
  // without main extensions, the non-secure MSPLIM is RAZ/WI
  return 0U;
#else
  uint32_t result;
  __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) );
  return result;
#endif
}
#endif
/**
  \brief   Set Main Stack Pointer Limit
  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
  Stack Pointer Limit register hence the write is silently ignored.
  \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM).
  \param [in]    MainStackPtrLimit  Main Stack Pointer Limit value to set
 */
__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit)
{
#if (!((defined (__ARM_ARCH_8M_MAIN__   ) && (__ARM_ARCH_8M_MAIN__   == 1)) || \
       (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1))   ) && \
    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
  // without main extensions, the non-secure MSPLIM is RAZ/WI
  (void)MainStackPtrLimit;
#else
  __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit));
#endif
}
#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))
/**
  \brief   Set Main Stack Pointer Limit (non-secure)
  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
  Stack Pointer Limit register hence the write is silently ignored.
  \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state.
  \param [in]    MainStackPtrLimit  Main Stack Pointer value to set
 */
__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit)
{
#if (!((defined (__ARM_ARCH_8M_MAIN__   ) && (__ARM_ARCH_8M_MAIN__   == 1)) || \
       (defined (__ARM_ARCH_8_1M_MAIN__ ) && (__ARM_ARCH_8_1M_MAIN__ == 1))   ) )
  // without main extensions, the non-secure MSPLIM is RAZ/WI
  (void)MainStackPtrLimit;
#else
  __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit));
#endif
}
#endif
#endif /* ((defined (__ARM_ARCH_8M_MAIN__  ) && (__ARM_ARCH_8M_MAIN__   == 1)) || \
           (defined (__ARM_ARCH_8M_BASE__  ) && (__ARM_ARCH_8M_BASE__   == 1)) || \
           (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1))     ) */
/**
  \brief   Get FPSCR
  \details Returns the current value of the Floating Point Status/Control register.
  \return               Floating Point Status/Control register value
 */
#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \
     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )
#define __get_FPSCR      (uint32_t)__builtin_arm_get_fpscr
#else
#define __get_FPSCR()      ((uint32_t)0U)
#endif
/**
  \brief   Set FPSCR
  \details Assigns the given value to the Floating Point Status/Control register.
  \param [in]    fpscr  Floating Point Status/Control value to set
 */
#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \
     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )
#define __set_FPSCR      __builtin_arm_set_fpscr
#else
#define __set_FPSCR(x)      ((void)(x))
#endif
/*@} end of CMSIS_Core_RegAccFunctions */
/* ##########################  Core Instruction Access  ######################### */
/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface
  Access to dedicated instructions
  @{
*/
/* Define macros for porting to both thumb1 and thumb2.
 * For thumb1, use low register (r0-r7), specified by constraint "l"
 * Otherwise, use general registers, specified by constraint "r" */
#if defined (__thumb__) && !defined (__thumb2__)
#define __CMSIS_GCC_OUT_REG(r) "=l" (r)
#define __CMSIS_GCC_RW_REG(r) "+l" (r)
#define __CMSIS_GCC_USE_REG(r) "l" (r)
#else
#define __CMSIS_GCC_OUT_REG(r) "=r" (r)
#define __CMSIS_GCC_RW_REG(r) "+r" (r)
#define __CMSIS_GCC_USE_REG(r) "r" (r)
#endif
/**
  \brief   No Operation
  \details No Operation does nothing. This instruction can be used for code alignment purposes.
 */
#define __NOP          __builtin_arm_nop
/**
  \brief   Wait For Interrupt
  \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs.
 */
#define __WFI          __builtin_arm_wfi
/**
  \brief   Wait For Event
  \details Wait For Event is a hint instruction that permits the processor to enter
           a low-power state until one of a number of events occurs.
 */
#define __WFE          __builtin_arm_wfe
/**
  \brief   Send Event
  \details Send Event is a hint instruction. It causes an event to be signaled to the CPU.
 */
#define __SEV          __builtin_arm_sev
/**
  \brief   Instruction Synchronization Barrier
  \details Instruction Synchronization Barrier flushes the pipeline in the processor,
           so that all instructions following the ISB are fetched from cache or memory,
           after the instruction has been completed.
 */
#define __ISB()        __builtin_arm_isb(0xF)
/**
  \brief   Data Synchronization Barrier
  \details Acts as a special kind of Data Memory Barrier.
           It completes when all explicit memory accesses before this instruction complete.
 */
#define __DSB()        __builtin_arm_dsb(0xF)
/**
  \brief   Data Memory Barrier
  \details Ensures the apparent order of the explicit memory operations before
           and after the instruction, without ensuring their completion.
 */
#define __DMB()        __builtin_arm_dmb(0xF)
/**
  \brief   Reverse byte order (32 bit)
  \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412.
  \param [in]    value  Value to reverse
  \return               Reversed value
 */
#define __REV(value)   __builtin_bswap32(value)
/**
  \brief   Reverse byte order (16 bit)
  \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856.
  \param [in]    value  Value to reverse
  \return               Reversed value
 */
#define __REV16(value) __ROR(__REV(value), 16)
/**
  \brief   Reverse byte order (16 bit)
  \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000.
  \param [in]    value  Value to reverse
  \return               Reversed value
 */
#define __REVSH(value) (int16_t)__builtin_bswap16(value)
/**
  \brief   Rotate Right in unsigned value (32 bit)
  \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.
  \param [in]    op1  Value to rotate
  \param [in]    op2  Number of Bits to rotate
  \return               Rotated value
 */
__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2)
{
  op2 %= 32U;
  if (op2 == 0U)
  {
    return op1;
  }
  return (op1 >> op2) | (op1 << (32U - op2));
}
/**
  \brief   Breakpoint
  \details Causes the processor to enter Debug state.
           Debug tools can use this to investigate system state when the instruction at a particular address is reached.
  \param [in]    value  is ignored by the processor.
                 If required, a debugger can use it to store additional information about the breakpoint.
 */
#define __BKPT(value)     __ASM volatile ("bkpt "#value)
/**
  \brief   Reverse bit order of value
  \details Reverses the bit order of the given value.
  \param [in]    value  Value to reverse
  \return               Reversed value
 */
#define __RBIT            __builtin_arm_rbit
/**
  \brief   Count leading zeros
  \details Counts the number of leading zeros of a data value.
  \param [in]  value  Value to count the leading zeros
  \return             number of leading zeros in value
 */
__STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value)
{
  /* Even though __builtin_clz produces a CLZ instruction on ARM, formally
     __builtin_clz(0) is undefined behaviour, so handle this case specially.
     This guarantees ARM-compatible results if happening to compile on a non-ARM
     target, and ensures the compiler doesn't decide to activate any
     optimisations using the logic "value was passed to __builtin_clz, so it
     is non-zero".
     ARM Compiler 6.10 and possibly earlier will optimise this test away, leaving a
     single CLZ instruction.
   */
  if (value == 0U)
  {
    return 32U;
  }
  return __builtin_clz(value);
}
#if ((defined (__ARM_ARCH_7M__       ) && (__ARM_ARCH_7M__        == 1)) || \
     (defined (__ARM_ARCH_7EM__      ) && (__ARM_ARCH_7EM__       == 1)) || \
     (defined (__ARM_ARCH_8M_MAIN__  ) && (__ARM_ARCH_8M_MAIN__   == 1)) || \
     (defined (__ARM_ARCH_8M_BASE__  ) && (__ARM_ARCH_8M_BASE__   == 1)) || \
     (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1))     )
/**
  \brief   LDR Exclusive (8 bit)
  \details Executes a exclusive LDR instruction for 8 bit value.
  \param [in]    ptr  Pointer to data
  \return             value of type uint8_t at (*ptr)
 */
#define __LDREXB        (uint8_t)__builtin_arm_ldrex
/**
  \brief   LDR Exclusive (16 bit)
  \details Executes a exclusive LDR instruction for 16 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint16_t at (*ptr)
 */
#define __LDREXH        (uint16_t)__builtin_arm_ldrex
/**
  \brief   LDR Exclusive (32 bit)
  \details Executes a exclusive LDR instruction for 32 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint32_t at (*ptr)
 */
#define __LDREXW        (uint32_t)__builtin_arm_ldrex
/**
  \brief   STR Exclusive (8 bit)
  \details Executes a exclusive STR instruction for 8 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
  \return          0  Function succeeded
  \return          1  Function failed
 */
#define __STREXB        (uint32_t)__builtin_arm_strex
/**
  \brief   STR Exclusive (16 bit)
  \details Executes a exclusive STR instruction for 16 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
  \return          0  Function succeeded
  \return          1  Function failed
 */
#define __STREXH        (uint32_t)__builtin_arm_strex
/**
  \brief   STR Exclusive (32 bit)
  \details Executes a exclusive STR instruction for 32 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
  \return          0  Function succeeded
  \return          1  Function failed
 */
#define __STREXW        (uint32_t)__builtin_arm_strex
/**
  \brief   Remove the exclusive lock
  \details Removes the exclusive lock which is created by LDREX.
 */
#define __CLREX             __builtin_arm_clrex
#endif /* ((defined (__ARM_ARCH_7M__       ) && (__ARM_ARCH_7M__        == 1)) || \
           (defined (__ARM_ARCH_7EM__      ) && (__ARM_ARCH_7EM__       == 1)) || \
           (defined (__ARM_ARCH_8M_MAIN__  ) && (__ARM_ARCH_8M_MAIN__   == 1)) || \
           (defined (__ARM_ARCH_8M_BASE__  ) && (__ARM_ARCH_8M_BASE__   == 1)) || \
           (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1))     ) */
#if ((defined (__ARM_ARCH_7M__       ) && (__ARM_ARCH_7M__        == 1)) || \
     (defined (__ARM_ARCH_7EM__      ) && (__ARM_ARCH_7EM__       == 1)) || \
     (defined (__ARM_ARCH_8M_MAIN__  ) && (__ARM_ARCH_8M_MAIN__   == 1)) || \
     (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1))     )
/**
  \brief   Signed Saturate
  \details Saturates a signed value.
  \param [in]  value  Value to be saturated
  \param [in]    sat  Bit position to saturate to (1..32)
  \return             Saturated value
 */
#define __SSAT             __builtin_arm_ssat
/**
  \brief   Unsigned Saturate
  \details Saturates an unsigned value.
  \param [in]  value  Value to be saturated
  \param [in]    sat  Bit position to saturate to (0..31)
  \return             Saturated value
 */
#define __USAT             __builtin_arm_usat
/**
  \brief   Rotate Right with Extend (32 bit)
  \details Moves each bit of a bitstring right by one bit.
           The carry input is shifted in at the left end of the bitstring.
  \param [in]    value  Value to rotate
  \return               Rotated value
 */
__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value)
{
  uint32_t result;
  __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );
  return(result);
}
/**
  \brief   LDRT Unprivileged (8 bit)
  \details Executes a Unprivileged LDRT instruction for 8 bit value.
  \param [in]    ptr  Pointer to data
  \return             value of type uint8_t at (*ptr)
 */
__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr)
{
  uint32_t result;
  __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) );
  return ((uint8_t) result);    /* Add explicit type cast here */
}
/**
  \brief   LDRT Unprivileged (16 bit)
  \details Executes a Unprivileged LDRT instruction for 16 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint16_t at (*ptr)
 */
__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr)
{
  uint32_t result;
  __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) );
  return ((uint16_t) result);    /* Add explicit type cast here */
}
/**
  \brief   LDRT Unprivileged (32 bit)
  \details Executes a Unprivileged LDRT instruction for 32 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint32_t at (*ptr)
 */
__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr)
{
  uint32_t result;
  __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) );
  return(result);
}
/**
  \brief   STRT Unprivileged (8 bit)
  \details Executes a Unprivileged STRT instruction for 8 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
 */
__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr)
{
  __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) );
}
/**
  \brief   STRT Unprivileged (16 bit)
  \details Executes a Unprivileged STRT instruction for 16 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
 */
__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr)
{
  __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) );
}
/**
  \brief   STRT Unprivileged (32 bit)
  \details Executes a Unprivileged STRT instruction for 32 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
 */
__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr)
{
  __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) );
}
#else /* ((defined (__ARM_ARCH_7M__       ) && (__ARM_ARCH_7M__        == 1)) || \
          (defined (__ARM_ARCH_7EM__      ) && (__ARM_ARCH_7EM__       == 1)) || \
          (defined (__ARM_ARCH_8M_MAIN__  ) && (__ARM_ARCH_8M_MAIN__   == 1)) || \
          (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1))     ) */
/**
  \brief   Signed Saturate
  \details Saturates a signed value.
  \param [in]  value  Value to be saturated
  \param [in]    sat  Bit position to saturate to (1..32)
  \return             Saturated value
 */
__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat)
{
  if ((sat >= 1U) && (sat <= 32U))
  {
    const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U);
    const int32_t min = -1 - max ;
    if (val > max)
    {
      return max;
    }
    else if (val < min)
    {
      return min;
    }
  }
  return val;
}
/**
  \brief   Unsigned Saturate
  \details Saturates an unsigned value.
  \param [in]  value  Value to be saturated
  \param [in]    sat  Bit position to saturate to (0..31)
  \return             Saturated value
 */
__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat)
{
  if (sat <= 31U)
  {
    const uint32_t max = ((1U << sat) - 1U);
    if (val > (int32_t)max)
    {
      return max;
    }
    else if (val < 0)
    {
      return 0U;
    }
  }
  return (uint32_t)val;
}
#endif /* ((defined (__ARM_ARCH_7M__       ) && (__ARM_ARCH_7M__        == 1)) || \
           (defined (__ARM_ARCH_7EM__      ) && (__ARM_ARCH_7EM__       == 1)) || \
           (defined (__ARM_ARCH_8M_MAIN__  ) && (__ARM_ARCH_8M_MAIN__   == 1)) || \
           (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1))     ) */
#if ((defined (__ARM_ARCH_8M_MAIN__  ) && (__ARM_ARCH_8M_MAIN__   == 1)) || \
     (defined (__ARM_ARCH_8M_BASE__  ) && (__ARM_ARCH_8M_BASE__   == 1)) || \
     (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1))     )
/**
  \brief   Load-Acquire (8 bit)
  \details Executes a LDAB instruction for 8 bit value.
  \param [in]    ptr  Pointer to data
  \return             value of type uint8_t at (*ptr)
 */
__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr)
{
  uint32_t result;
  __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" );
  return ((uint8_t) result);
}
/**
  \brief   Load-Acquire (16 bit)
  \details Executes a LDAH instruction for 16 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint16_t at (*ptr)
 */
__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr)
{
  uint32_t result;
  __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" );
  return ((uint16_t) result);
}
/**
  \brief   Load-Acquire (32 bit)
  \details Executes a LDA instruction for 32 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint32_t at (*ptr)
 */
__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr)
{
  uint32_t result;
  __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" );
  return(result);
}
/**
  \brief   Store-Release (8 bit)
  \details Executes a STLB instruction for 8 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
 */
__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr)
{
  __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" );
}
/**
  \brief   Store-Release (16 bit)
  \details Executes a STLH instruction for 16 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
 */
__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr)
{
  __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" );
}
/**
  \brief   Store-Release (32 bit)
  \details Executes a STL instruction for 32 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
 */
__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr)
{
  __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" );
}
/**
  \brief   Load-Acquire Exclusive (8 bit)
  \details Executes a LDAB exclusive instruction for 8 bit value.
  \param [in]    ptr  Pointer to data
  \return             value of type uint8_t at (*ptr)
 */
#define     __LDAEXB                 (uint8_t)__builtin_arm_ldaex
/**
  \brief   Load-Acquire Exclusive (16 bit)
  \details Executes a LDAH exclusive instruction for 16 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint16_t at (*ptr)
 */
#define     __LDAEXH                 (uint16_t)__builtin_arm_ldaex
/**
  \brief   Load-Acquire Exclusive (32 bit)
  \details Executes a LDA exclusive instruction for 32 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint32_t at (*ptr)
 */
#define     __LDAEX                  (uint32_t)__builtin_arm_ldaex
/**
  \brief   Store-Release Exclusive (8 bit)
  \details Executes a STLB exclusive instruction for 8 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
  \return          0  Function succeeded
  \return          1  Function failed
 */
#define     __STLEXB                 (uint32_t)__builtin_arm_stlex
/**
  \brief   Store-Release Exclusive (16 bit)
  \details Executes a STLH exclusive instruction for 16 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
  \return          0  Function succeeded
  \return          1  Function failed
 */
#define     __STLEXH                 (uint32_t)__builtin_arm_stlex
/**
  \brief   Store-Release Exclusive (32 bit)
  \details Executes a STL exclusive instruction for 32 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
  \return          0  Function succeeded
  \return          1  Function failed
 */
#define     __STLEX                  (uint32_t)__builtin_arm_stlex
#endif /* ((defined (__ARM_ARCH_8M_MAIN__  ) && (__ARM_ARCH_8M_MAIN__   == 1)) || \
           (defined (__ARM_ARCH_8M_BASE__  ) && (__ARM_ARCH_8M_BASE__   == 1)) || \
           (defined (__ARM_ARCH_8_1M_MAIN__) && (__ARM_ARCH_8_1M_MAIN__ == 1))     ) */
/*@}*/ /* end of group CMSIS_Core_InstructionInterface */
/* ###################  Compiler specific Intrinsics  ########################### */
/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics
  Access to dedicated SIMD instructions
  @{
*/
#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))
#define     __SADD8                 __builtin_arm_sadd8
#define     __QADD8                 __builtin_arm_qadd8
#define     __SHADD8                __builtin_arm_shadd8
#define     __UADD8                 __builtin_arm_uadd8
#define     __UQADD8                __builtin_arm_uqadd8
#define     __UHADD8                __builtin_arm_uhadd8
#define     __SSUB8                 __builtin_arm_ssub8
#define     __QSUB8                 __builtin_arm_qsub8
#define     __SHSUB8                __builtin_arm_shsub8
#define     __USUB8                 __builtin_arm_usub8
#define     __UQSUB8                __builtin_arm_uqsub8
#define     __UHSUB8                __builtin_arm_uhsub8
#define     __SADD16                __builtin_arm_sadd16
#define     __QADD16                __builtin_arm_qadd16
#define     __SHADD16               __builtin_arm_shadd16
#define     __UADD16                __builtin_arm_uadd16
#define     __UQADD16               __builtin_arm_uqadd16
#define     __UHADD16               __builtin_arm_uhadd16
#define     __SSUB16                __builtin_arm_ssub16
#define     __QSUB16                __builtin_arm_qsub16
#define     __SHSUB16               __builtin_arm_shsub16
#define     __USUB16                __builtin_arm_usub16
#define     __UQSUB16               __builtin_arm_uqsub16
#define     __UHSUB16               __builtin_arm_uhsub16
#define     __SASX                  __builtin_arm_sasx
#define     __QASX                  __builtin_arm_qasx
#define     __SHASX                 __builtin_arm_shasx
#define     __UASX                  __builtin_arm_uasx
#define     __UQASX                 __builtin_arm_uqasx
#define     __UHASX                 __builtin_arm_uhasx
#define     __SSAX                  __builtin_arm_ssax
#define     __QSAX                  __builtin_arm_qsax
#define     __SHSAX                 __builtin_arm_shsax
#define     __USAX                  __builtin_arm_usax
#define     __UQSAX                 __builtin_arm_uqsax
#define     __UHSAX                 __builtin_arm_uhsax
#define     __USAD8                 __builtin_arm_usad8
#define     __USADA8                __builtin_arm_usada8
#define     __SSAT16                __builtin_arm_ssat16
#define     __USAT16                __builtin_arm_usat16
#define     __UXTB16                __builtin_arm_uxtb16
#define     __UXTAB16               __builtin_arm_uxtab16
#define     __SXTB16                __builtin_arm_sxtb16
#define     __SXTAB16               __builtin_arm_sxtab16
#define     __SMUAD                 __builtin_arm_smuad
#define     __SMUADX                __builtin_arm_smuadx
#define     __SMLAD                 __builtin_arm_smlad
#define     __SMLADX                __builtin_arm_smladx
#define     __SMLALD                __builtin_arm_smlald
#define     __SMLALDX               __builtin_arm_smlaldx
#define     __SMUSD                 __builtin_arm_smusd
#define     __SMUSDX                __builtin_arm_smusdx
#define     __SMLSD                 __builtin_arm_smlsd
#define     __SMLSDX                __builtin_arm_smlsdx
#define     __SMLSLD                __builtin_arm_smlsld
#define     __SMLSLDX               __builtin_arm_smlsldx
#define     __SEL                   __builtin_arm_sel
#define     __QADD                  __builtin_arm_qadd
#define     __QSUB                  __builtin_arm_qsub
#define __PKHBT(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0x0000FFFFUL) |  \
                                           ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL)  )
#define __PKHTB(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0xFFFF0000UL) |  \
                                           ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL)  )
#define __SXTB16_RORn(ARG1, ARG2)        __SXTB16(__ROR(ARG1, ARG2))
__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3)
{
  int32_t result;
  __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r"  (op1), "r" (op2), "r" (op3) );
  return(result);
}
#endif /* (__ARM_FEATURE_DSP == 1) */
/*@} end of group CMSIS_SIMD_intrinsics */
#endif /* __CMSIS_ARMCLANG_H */
keil/include/CMSIS/Include/cmsis_armclang_ltm.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1893 @@
/**************************************************************************//**
 * @file     cmsis_armclang_ltm.h
 * @brief    CMSIS compiler armclang (Arm Compiler 6) header file
 * @version  V1.3.0
 * @date     26. March 2020
 ******************************************************************************/
/*
 * Copyright (c) 2018-2020 Arm Limited. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the License); you may
 * not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*lint -esym(9058, IRQn)*/ /* disable MISRA 2012 Rule 2.4 for IRQn */
#ifndef __CMSIS_ARMCLANG_H
#define __CMSIS_ARMCLANG_H
#pragma clang system_header   /* treat file as system include file */
#ifndef __ARM_COMPAT_H
#include <arm_compat.h>    /* Compatibility header for Arm Compiler 5 intrinsics */
#endif
/* CMSIS compiler specific defines */
#ifndef   __ASM
  #define __ASM                                  __asm
#endif
#ifndef   __INLINE
  #define __INLINE                               __inline
#endif
#ifndef   __STATIC_INLINE
  #define __STATIC_INLINE                        static __inline
#endif
#ifndef   __STATIC_FORCEINLINE
  #define __STATIC_FORCEINLINE                   __attribute__((always_inline)) static __inline
#endif
#ifndef   __NO_RETURN
  #define __NO_RETURN                            __attribute__((__noreturn__))
#endif
#ifndef   __USED
  #define __USED                                 __attribute__((used))
#endif
#ifndef   __WEAK
  #define __WEAK                                 __attribute__((weak))
#endif
#ifndef   __PACKED
  #define __PACKED                               __attribute__((packed, aligned(1)))
#endif
#ifndef   __PACKED_STRUCT
  #define __PACKED_STRUCT                        struct __attribute__((packed, aligned(1)))
#endif
#ifndef   __PACKED_UNION
  #define __PACKED_UNION                         union __attribute__((packed, aligned(1)))
#endif
#ifndef   __UNALIGNED_UINT32        /* deprecated */
  #pragma clang diagnostic push
  #pragma clang diagnostic ignored "-Wpacked"
/*lint -esym(9058, T_UINT32)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32 */
  struct __attribute__((packed)) T_UINT32 { uint32_t v; };
  #pragma clang diagnostic pop
  #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)
#endif
#ifndef   __UNALIGNED_UINT16_WRITE
  #pragma clang diagnostic push
  #pragma clang diagnostic ignored "-Wpacked"
/*lint -esym(9058, T_UINT16_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_WRITE */
  __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };
  #pragma clang diagnostic pop
  #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))
#endif
#ifndef   __UNALIGNED_UINT16_READ
  #pragma clang diagnostic push
  #pragma clang diagnostic ignored "-Wpacked"
/*lint -esym(9058, T_UINT16_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_READ */
  __PACKED_STRUCT T_UINT16_READ { uint16_t v; };
  #pragma clang diagnostic pop
  #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)
#endif
#ifndef   __UNALIGNED_UINT32_WRITE
  #pragma clang diagnostic push
  #pragma clang diagnostic ignored "-Wpacked"
/*lint -esym(9058, T_UINT32_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_WRITE */
  __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };
  #pragma clang diagnostic pop
  #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))
#endif
#ifndef   __UNALIGNED_UINT32_READ
  #pragma clang diagnostic push
  #pragma clang diagnostic ignored "-Wpacked"
/*lint -esym(9058, T_UINT32_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_READ */
  __PACKED_STRUCT T_UINT32_READ { uint32_t v; };
  #pragma clang diagnostic pop
  #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)
#endif
#ifndef   __ALIGNED
  #define __ALIGNED(x)                           __attribute__((aligned(x)))
#endif
#ifndef   __RESTRICT
  #define __RESTRICT                             __restrict
#endif
#ifndef   __COMPILER_BARRIER
  #define __COMPILER_BARRIER()                   __ASM volatile("":::"memory")
#endif
/* #########################  Startup and Lowlevel Init  ######################## */
#ifndef __PROGRAM_START
#define __PROGRAM_START           __main
#endif
#ifndef __INITIAL_SP
#define __INITIAL_SP              Image$$ARM_LIB_STACK$$ZI$$Limit
#endif
#ifndef __STACK_LIMIT
#define __STACK_LIMIT             Image$$ARM_LIB_STACK$$ZI$$Base
#endif
#ifndef __VECTOR_TABLE
#define __VECTOR_TABLE            __Vectors
#endif
#ifndef __VECTOR_TABLE_ATTRIBUTE
#define __VECTOR_TABLE_ATTRIBUTE  __attribute__((used, section("RESET")))
#endif
/* ###########################  Core Function Access  ########################### */
/** \ingroup  CMSIS_Core_FunctionInterface
    \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions
  @{
 */
/**
  \brief   Enable IRQ Interrupts
  \details Enables IRQ interrupts by clearing the I-bit in the CPSR.
           Can only be executed in Privileged modes.
 */
/* intrinsic void __enable_irq();  see arm_compat.h */
/**
  \brief   Disable IRQ Interrupts
  \details Disables IRQ interrupts by setting the I-bit in the CPSR.
           Can only be executed in Privileged modes.
 */
/* intrinsic void __disable_irq();  see arm_compat.h */
/**
  \brief   Get Control Register
  \details Returns the content of the Control Register.
  \return               Control Register value
 */
__STATIC_FORCEINLINE uint32_t __get_CONTROL(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, control" : "=r" (result) );
  return(result);
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Get Control Register (non-secure)
  \details Returns the content of the non-secure Control Register when in secure mode.
  \return               non-secure Control Register value
 */
__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, control_ns" : "=r" (result) );
  return(result);
}
#endif
/**
  \brief   Set Control Register
  \details Writes the given value to the Control Register.
  \param [in]    control  Control Register value to set
 */
__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control)
{
  __ASM volatile ("MSR control, %0" : : "r" (control) : "memory");
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Set Control Register (non-secure)
  \details Writes the given value to the non-secure Control Register when in secure state.
  \param [in]    control  Control Register value to set
 */
__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control)
{
  __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory");
}
#endif
/**
  \brief   Get IPSR Register
  \details Returns the content of the IPSR Register.
  \return               IPSR Register value
 */
__STATIC_FORCEINLINE uint32_t __get_IPSR(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, ipsr" : "=r" (result) );
  return(result);
}
/**
  \brief   Get APSR Register
  \details Returns the content of the APSR Register.
  \return               APSR Register value
 */
__STATIC_FORCEINLINE uint32_t __get_APSR(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, apsr" : "=r" (result) );
  return(result);
}
/**
  \brief   Get xPSR Register
  \details Returns the content of the xPSR Register.
  \return               xPSR Register value
 */
__STATIC_FORCEINLINE uint32_t __get_xPSR(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, xpsr" : "=r" (result) );
  return(result);
}
/**
  \brief   Get Process Stack Pointer
  \details Returns the current value of the Process Stack Pointer (PSP).
  \return               PSP Register value
 */
__STATIC_FORCEINLINE uint32_t __get_PSP(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, psp"  : "=r" (result) );
  return(result);
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Get Process Stack Pointer (non-secure)
  \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state.
  \return               PSP Register value
 */
__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, psp_ns"  : "=r" (result) );
  return(result);
}
#endif
/**
  \brief   Set Process Stack Pointer
  \details Assigns the given value to the Process Stack Pointer (PSP).
  \param [in]    topOfProcStack  Process Stack Pointer value to set
 */
__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack)
{
  __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : );
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Set Process Stack Pointer (non-secure)
  \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state.
  \param [in]    topOfProcStack  Process Stack Pointer value to set
 */
__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack)
{
  __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : );
}
#endif
/**
  \brief   Get Main Stack Pointer
  \details Returns the current value of the Main Stack Pointer (MSP).
  \return               MSP Register value
 */
__STATIC_FORCEINLINE uint32_t __get_MSP(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, msp" : "=r" (result) );
  return(result);
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Get Main Stack Pointer (non-secure)
  \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state.
  \return               MSP Register value
 */
__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, msp_ns" : "=r" (result) );
  return(result);
}
#endif
/**
  \brief   Set Main Stack Pointer
  \details Assigns the given value to the Main Stack Pointer (MSP).
  \param [in]    topOfMainStack  Main Stack Pointer value to set
 */
__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack)
{
  __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : );
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Set Main Stack Pointer (non-secure)
  \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state.
  \param [in]    topOfMainStack  Main Stack Pointer value to set
 */
__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack)
{
  __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : );
}
#endif
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Get Stack Pointer (non-secure)
  \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state.
  \return               SP Register value
 */
__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, sp_ns" : "=r" (result) );
  return(result);
}
/**
  \brief   Set Stack Pointer (non-secure)
  \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state.
  \param [in]    topOfStack  Stack Pointer value to set
 */
__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack)
{
  __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : );
}
#endif
/**
  \brief   Get Priority Mask
  \details Returns the current state of the priority mask bit from the Priority Mask Register.
  \return               Priority Mask value
 */
__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, primask" : "=r" (result) );
  return(result);
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Get Priority Mask (non-secure)
  \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state.
  \return               Priority Mask value
 */
__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, primask_ns" : "=r" (result) );
  return(result);
}
#endif
/**
  \brief   Set Priority Mask
  \details Assigns the given value to the Priority Mask Register.
  \param [in]    priMask  Priority Mask
 */
__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask)
{
  __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory");
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Set Priority Mask (non-secure)
  \details Assigns the given value to the non-secure Priority Mask Register when in secure state.
  \param [in]    priMask  Priority Mask
 */
__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask)
{
  __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory");
}
#endif
#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \
     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \
     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    )
/**
  \brief   Enable FIQ
  \details Enables FIQ interrupts by clearing the F-bit in the CPSR.
           Can only be executed in Privileged modes.
 */
#define __enable_fault_irq                __enable_fiq   /* see arm_compat.h */
/**
  \brief   Disable FIQ
  \details Disables FIQ interrupts by setting the F-bit in the CPSR.
           Can only be executed in Privileged modes.
 */
#define __disable_fault_irq               __disable_fiq   /* see arm_compat.h */
/**
  \brief   Get Base Priority
  \details Returns the current value of the Base Priority register.
  \return               Base Priority register value
 */
__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, basepri" : "=r" (result) );
  return(result);
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Get Base Priority (non-secure)
  \details Returns the current value of the non-secure Base Priority register when in secure state.
  \return               Base Priority register value
 */
__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) );
  return(result);
}
#endif
/**
  \brief   Set Base Priority
  \details Assigns the given value to the Base Priority register.
  \param [in]    basePri  Base Priority value to set
 */
__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri)
{
  __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory");
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Set Base Priority (non-secure)
  \details Assigns the given value to the non-secure Base Priority register when in secure state.
  \param [in]    basePri  Base Priority value to set
 */
__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri)
{
  __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory");
}
#endif
/**
  \brief   Set Base Priority with condition
  \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled,
           or the new value increases the BASEPRI priority level.
  \param [in]    basePri  Base Priority value to set
 */
__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri)
{
  __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory");
}
/**
  \brief   Get Fault Mask
  \details Returns the current value of the Fault Mask register.
  \return               Fault Mask register value
 */
__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, faultmask" : "=r" (result) );
  return(result);
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Get Fault Mask (non-secure)
  \details Returns the current value of the non-secure Fault Mask register when in secure state.
  \return               Fault Mask register value
 */
__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) );
  return(result);
}
#endif
/**
  \brief   Set Fault Mask
  \details Assigns the given value to the Fault Mask register.
  \param [in]    faultMask  Fault Mask value to set
 */
__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask)
{
  __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory");
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Set Fault Mask (non-secure)
  \details Assigns the given value to the non-secure Fault Mask register when in secure state.
  \param [in]    faultMask  Fault Mask value to set
 */
__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask)
{
  __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory");
}
#endif
#endif /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \
           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \
           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    ) */
#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )
/**
  \brief   Get Process Stack Pointer Limit
  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
  Stack Pointer Limit register hence zero is returned always in non-secure
  mode.
  \details Returns the current value of the Process Stack Pointer Limit (PSPLIM).
  \return               PSPLIM Register value
 */
__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void)
{
#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
    // without main extensions, the non-secure PSPLIM is RAZ/WI
  return 0U;
#else
  uint32_t result;
  __ASM volatile ("MRS %0, psplim"  : "=r" (result) );
  return result;
#endif
}
#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Get Process Stack Pointer Limit (non-secure)
  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
  Stack Pointer Limit register hence zero is returned always in non-secure
  mode.
  \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state.
  \return               PSPLIM Register value
 */
__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void)
{
#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))
  // without main extensions, the non-secure PSPLIM is RAZ/WI
  return 0U;
#else
  uint32_t result;
  __ASM volatile ("MRS %0, psplim_ns"  : "=r" (result) );
  return result;
#endif
}
#endif
/**
  \brief   Set Process Stack Pointer Limit
  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
  Stack Pointer Limit register hence the write is silently ignored in non-secure
  mode.
  \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM).
  \param [in]    ProcStackPtrLimit  Process Stack Pointer Limit value to set
 */
__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit)
{
#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
  // without main extensions, the non-secure PSPLIM is RAZ/WI
  (void)ProcStackPtrLimit;
#else
  __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit));
#endif
}
#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))
/**
  \brief   Set Process Stack Pointer (non-secure)
  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
  Stack Pointer Limit register hence the write is silently ignored in non-secure
  mode.
  \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state.
  \param [in]    ProcStackPtrLimit  Process Stack Pointer Limit value to set
 */
__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit)
{
#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))
  // without main extensions, the non-secure PSPLIM is RAZ/WI
  (void)ProcStackPtrLimit;
#else
  __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit));
#endif
}
#endif
/**
  \brief   Get Main Stack Pointer Limit
  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
  Stack Pointer Limit register hence zero is returned always.
  \details Returns the current value of the Main Stack Pointer Limit (MSPLIM).
  \return               MSPLIM Register value
 */
__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void)
{
#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
  // without main extensions, the non-secure MSPLIM is RAZ/WI
  return 0U;
#else
  uint32_t result;
  __ASM volatile ("MRS %0, msplim" : "=r" (result) );
  return result;
#endif
}
#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))
/**
  \brief   Get Main Stack Pointer Limit (non-secure)
  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
  Stack Pointer Limit register hence zero is returned always.
  \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state.
  \return               MSPLIM Register value
 */
__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void)
{
#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))
  // without main extensions, the non-secure MSPLIM is RAZ/WI
  return 0U;
#else
  uint32_t result;
  __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) );
  return result;
#endif
}
#endif
/**
  \brief   Set Main Stack Pointer Limit
  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
  Stack Pointer Limit register hence the write is silently ignored.
  \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM).
  \param [in]    MainStackPtrLimit  Main Stack Pointer Limit value to set
 */
__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit)
{
#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
  // without main extensions, the non-secure MSPLIM is RAZ/WI
  (void)MainStackPtrLimit;
#else
  __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit));
#endif
}
#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))
/**
  \brief   Set Main Stack Pointer Limit (non-secure)
  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
  Stack Pointer Limit register hence the write is silently ignored.
  \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state.
  \param [in]    MainStackPtrLimit  Main Stack Pointer value to set
 */
__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit)
{
#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))
  // without main extensions, the non-secure MSPLIM is RAZ/WI
  (void)MainStackPtrLimit;
#else
  __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit));
#endif
}
#endif
#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
           (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    ) */
/**
  \brief   Get FPSCR
  \details Returns the current value of the Floating Point Status/Control register.
  \return               Floating Point Status/Control register value
 */
#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \
     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )
#define __get_FPSCR      (uint32_t)__builtin_arm_get_fpscr
#else
#define __get_FPSCR()      ((uint32_t)0U)
#endif
/**
  \brief   Set FPSCR
  \details Assigns the given value to the Floating Point Status/Control register.
  \param [in]    fpscr  Floating Point Status/Control value to set
 */
#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \
     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )
#define __set_FPSCR      __builtin_arm_set_fpscr
#else
#define __set_FPSCR(x)      ((void)(x))
#endif
/*@} end of CMSIS_Core_RegAccFunctions */
/* ##########################  Core Instruction Access  ######################### */
/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface
  Access to dedicated instructions
  @{
*/
/* Define macros for porting to both thumb1 and thumb2.
 * For thumb1, use low register (r0-r7), specified by constraint "l"
 * Otherwise, use general registers, specified by constraint "r" */
#if defined (__thumb__) && !defined (__thumb2__)
#define __CMSIS_GCC_OUT_REG(r) "=l" (r)
#define __CMSIS_GCC_USE_REG(r) "l" (r)
#else
#define __CMSIS_GCC_OUT_REG(r) "=r" (r)
#define __CMSIS_GCC_USE_REG(r) "r" (r)
#endif
/**
  \brief   No Operation
  \details No Operation does nothing. This instruction can be used for code alignment purposes.
 */
#define __NOP          __builtin_arm_nop
/**
  \brief   Wait For Interrupt
  \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs.
 */
#define __WFI          __builtin_arm_wfi
/**
  \brief   Wait For Event
  \details Wait For Event is a hint instruction that permits the processor to enter
           a low-power state until one of a number of events occurs.
 */
#define __WFE          __builtin_arm_wfe
/**
  \brief   Send Event
  \details Send Event is a hint instruction. It causes an event to be signaled to the CPU.
 */
#define __SEV          __builtin_arm_sev
/**
  \brief   Instruction Synchronization Barrier
  \details Instruction Synchronization Barrier flushes the pipeline in the processor,
           so that all instructions following the ISB are fetched from cache or memory,
           after the instruction has been completed.
 */
#define __ISB()        __builtin_arm_isb(0xF)
/**
  \brief   Data Synchronization Barrier
  \details Acts as a special kind of Data Memory Barrier.
           It completes when all explicit memory accesses before this instruction complete.
 */
#define __DSB()        __builtin_arm_dsb(0xF)
/**
  \brief   Data Memory Barrier
  \details Ensures the apparent order of the explicit memory operations before
           and after the instruction, without ensuring their completion.
 */
#define __DMB()        __builtin_arm_dmb(0xF)
/**
  \brief   Reverse byte order (32 bit)
  \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412.
  \param [in]    value  Value to reverse
  \return               Reversed value
 */
#define __REV(value)   __builtin_bswap32(value)
/**
  \brief   Reverse byte order (16 bit)
  \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856.
  \param [in]    value  Value to reverse
  \return               Reversed value
 */
#define __REV16(value) __ROR(__REV(value), 16)
/**
  \brief   Reverse byte order (16 bit)
  \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000.
  \param [in]    value  Value to reverse
  \return               Reversed value
 */
#define __REVSH(value) (int16_t)__builtin_bswap16(value)
/**
  \brief   Rotate Right in unsigned value (32 bit)
  \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.
  \param [in]    op1  Value to rotate
  \param [in]    op2  Number of Bits to rotate
  \return               Rotated value
 */
__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2)
{
  op2 %= 32U;
  if (op2 == 0U)
  {
    return op1;
  }
  return (op1 >> op2) | (op1 << (32U - op2));
}
/**
  \brief   Breakpoint
  \details Causes the processor to enter Debug state.
           Debug tools can use this to investigate system state when the instruction at a particular address is reached.
  \param [in]    value  is ignored by the processor.
                 If required, a debugger can use it to store additional information about the breakpoint.
 */
#define __BKPT(value)     __ASM volatile ("bkpt "#value)
/**
  \brief   Reverse bit order of value
  \details Reverses the bit order of the given value.
  \param [in]    value  Value to reverse
  \return               Reversed value
 */
#define __RBIT            __builtin_arm_rbit
/**
  \brief   Count leading zeros
  \details Counts the number of leading zeros of a data value.
  \param [in]  value  Value to count the leading zeros
  \return             number of leading zeros in value
 */
__STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value)
{
  /* Even though __builtin_clz produces a CLZ instruction on ARM, formally
     __builtin_clz(0) is undefined behaviour, so handle this case specially.
     This guarantees ARM-compatible results if happening to compile on a non-ARM
     target, and ensures the compiler doesn't decide to activate any
     optimisations using the logic "value was passed to __builtin_clz, so it
     is non-zero".
     ARM Compiler 6.10 and possibly earlier will optimise this test away, leaving a
     single CLZ instruction.
   */
  if (value == 0U)
  {
    return 32U;
  }
  return __builtin_clz(value);
}
#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \
     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \
     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )
/**
  \brief   LDR Exclusive (8 bit)
  \details Executes a exclusive LDR instruction for 8 bit value.
  \param [in]    ptr  Pointer to data
  \return             value of type uint8_t at (*ptr)
 */
#define __LDREXB        (uint8_t)__builtin_arm_ldrex
/**
  \brief   LDR Exclusive (16 bit)
  \details Executes a exclusive LDR instruction for 16 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint16_t at (*ptr)
 */
#define __LDREXH        (uint16_t)__builtin_arm_ldrex
/**
  \brief   LDR Exclusive (32 bit)
  \details Executes a exclusive LDR instruction for 32 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint32_t at (*ptr)
 */
#define __LDREXW        (uint32_t)__builtin_arm_ldrex
/**
  \brief   STR Exclusive (8 bit)
  \details Executes a exclusive STR instruction for 8 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
  \return          0  Function succeeded
  \return          1  Function failed
 */
#define __STREXB        (uint32_t)__builtin_arm_strex
/**
  \brief   STR Exclusive (16 bit)
  \details Executes a exclusive STR instruction for 16 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
  \return          0  Function succeeded
  \return          1  Function failed
 */
#define __STREXH        (uint32_t)__builtin_arm_strex
/**
  \brief   STR Exclusive (32 bit)
  \details Executes a exclusive STR instruction for 32 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
  \return          0  Function succeeded
  \return          1  Function failed
 */
#define __STREXW        (uint32_t)__builtin_arm_strex
/**
  \brief   Remove the exclusive lock
  \details Removes the exclusive lock which is created by LDREX.
 */
#define __CLREX             __builtin_arm_clrex
#endif /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \
           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \
           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
           (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    ) */
#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \
     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \
     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    )
/**
  \brief   Signed Saturate
  \details Saturates a signed value.
  \param [in]  value  Value to be saturated
  \param [in]    sat  Bit position to saturate to (1..32)
  \return             Saturated value
 */
#define __SSAT             __builtin_arm_ssat
/**
  \brief   Unsigned Saturate
  \details Saturates an unsigned value.
  \param [in]  value  Value to be saturated
  \param [in]    sat  Bit position to saturate to (0..31)
  \return             Saturated value
 */
#define __USAT             __builtin_arm_usat
/**
  \brief   Rotate Right with Extend (32 bit)
  \details Moves each bit of a bitstring right by one bit.
           The carry input is shifted in at the left end of the bitstring.
  \param [in]    value  Value to rotate
  \return               Rotated value
 */
__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value)
{
  uint32_t result;
  __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );
  return(result);
}
/**
  \brief   LDRT Unprivileged (8 bit)
  \details Executes a Unprivileged LDRT instruction for 8 bit value.
  \param [in]    ptr  Pointer to data
  \return             value of type uint8_t at (*ptr)
 */
__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr)
{
  uint32_t result;
  __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) );
  return ((uint8_t) result);    /* Add explicit type cast here */
}
/**
  \brief   LDRT Unprivileged (16 bit)
  \details Executes a Unprivileged LDRT instruction for 16 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint16_t at (*ptr)
 */
__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr)
{
  uint32_t result;
  __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) );
  return ((uint16_t) result);    /* Add explicit type cast here */
}
/**
  \brief   LDRT Unprivileged (32 bit)
  \details Executes a Unprivileged LDRT instruction for 32 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint32_t at (*ptr)
 */
__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr)
{
  uint32_t result;
  __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) );
  return(result);
}
/**
  \brief   STRT Unprivileged (8 bit)
  \details Executes a Unprivileged STRT instruction for 8 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
 */
__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr)
{
  __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) );
}
/**
  \brief   STRT Unprivileged (16 bit)
  \details Executes a Unprivileged STRT instruction for 16 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
 */
__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr)
{
  __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) );
}
/**
  \brief   STRT Unprivileged (32 bit)
  \details Executes a Unprivileged STRT instruction for 32 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
 */
__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr)
{
  __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) );
}
#else  /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \
           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \
           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    ) */
/**
  \brief   Signed Saturate
  \details Saturates a signed value.
  \param [in]  value  Value to be saturated
  \param [in]    sat  Bit position to saturate to (1..32)
  \return             Saturated value
 */
__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat)
{
  if ((sat >= 1U) && (sat <= 32U))
  {
    const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U);
    const int32_t min = -1 - max ;
    if (val > max)
    {
      return max;
    }
    else if (val < min)
    {
      return min;
    }
  }
  return val;
}
/**
  \brief   Unsigned Saturate
  \details Saturates an unsigned value.
  \param [in]  value  Value to be saturated
  \param [in]    sat  Bit position to saturate to (0..31)
  \return             Saturated value
 */
__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat)
{
  if (sat <= 31U)
  {
    const uint32_t max = ((1U << sat) - 1U);
    if (val > (int32_t)max)
    {
      return max;
    }
    else if (val < 0)
    {
      return 0U;
    }
  }
  return (uint32_t)val;
}
#endif /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \
           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \
           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    ) */
#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )
/**
  \brief   Load-Acquire (8 bit)
  \details Executes a LDAB instruction for 8 bit value.
  \param [in]    ptr  Pointer to data
  \return             value of type uint8_t at (*ptr)
 */
__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr)
{
  uint32_t result;
  __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" );
  return ((uint8_t) result);
}
/**
  \brief   Load-Acquire (16 bit)
  \details Executes a LDAH instruction for 16 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint16_t at (*ptr)
 */
__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr)
{
  uint32_t result;
  __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" );
  return ((uint16_t) result);
}
/**
  \brief   Load-Acquire (32 bit)
  \details Executes a LDA instruction for 32 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint32_t at (*ptr)
 */
__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr)
{
  uint32_t result;
  __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" );
  return(result);
}
/**
  \brief   Store-Release (8 bit)
  \details Executes a STLB instruction for 8 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
 */
__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr)
{
  __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" );
}
/**
  \brief   Store-Release (16 bit)
  \details Executes a STLH instruction for 16 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
 */
__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr)
{
  __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" );
}
/**
  \brief   Store-Release (32 bit)
  \details Executes a STL instruction for 32 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
 */
__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr)
{
  __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" );
}
/**
  \brief   Load-Acquire Exclusive (8 bit)
  \details Executes a LDAB exclusive instruction for 8 bit value.
  \param [in]    ptr  Pointer to data
  \return             value of type uint8_t at (*ptr)
 */
#define     __LDAEXB                 (uint8_t)__builtin_arm_ldaex
/**
  \brief   Load-Acquire Exclusive (16 bit)
  \details Executes a LDAH exclusive instruction for 16 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint16_t at (*ptr)
 */
#define     __LDAEXH                 (uint16_t)__builtin_arm_ldaex
/**
  \brief   Load-Acquire Exclusive (32 bit)
  \details Executes a LDA exclusive instruction for 32 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint32_t at (*ptr)
 */
#define     __LDAEX                  (uint32_t)__builtin_arm_ldaex
/**
  \brief   Store-Release Exclusive (8 bit)
  \details Executes a STLB exclusive instruction for 8 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
  \return          0  Function succeeded
  \return          1  Function failed
 */
#define     __STLEXB                 (uint32_t)__builtin_arm_stlex
/**
  \brief   Store-Release Exclusive (16 bit)
  \details Executes a STLH exclusive instruction for 16 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
  \return          0  Function succeeded
  \return          1  Function failed
 */
#define     __STLEXH                 (uint32_t)__builtin_arm_stlex
/**
  \brief   Store-Release Exclusive (32 bit)
  \details Executes a STL exclusive instruction for 32 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
  \return          0  Function succeeded
  \return          1  Function failed
 */
#define     __STLEX                  (uint32_t)__builtin_arm_stlex
#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
           (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    ) */
/*@}*/ /* end of group CMSIS_Core_InstructionInterface */
/* ###################  Compiler specific Intrinsics  ########################### */
/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics
  Access to dedicated SIMD instructions
  @{
*/
#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))
__STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3)
{
  uint32_t result;
  __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
  return(result);
}
#define __SSAT16(ARG1,ARG2) \
({                          \
  int32_t __RES, __ARG1 = (ARG1); \
  __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) ); \
  __RES; \
 })
#define __USAT16(ARG1,ARG2) \
({                          \
  uint32_t __RES, __ARG1 = (ARG1); \
  __ASM ("usat16 %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) ); \
  __RES; \
 })
__STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1)
{
  uint32_t result;
  __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1));
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1)
{
  uint32_t result;
  __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1));
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SMUAD  (uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3)
{
  uint32_t result;
  __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3)
{
  uint32_t result;
  __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
  return(result);
}
__STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc)
{
  union llreg_u{
    uint32_t w32[2];
    uint64_t w64;
  } llr;
  llr.w64 = acc;
#ifndef __ARMEB__   /* Little endian */
  __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );
#else               /* Big endian */
  __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );
#endif
  return(llr.w64);
}
__STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc)
{
  union llreg_u{
    uint32_t w32[2];
    uint64_t w64;
  } llr;
  llr.w64 = acc;
#ifndef __ARMEB__   /* Little endian */
  __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );
#else               /* Big endian */
  __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );
#endif
  return(llr.w64);
}
__STATIC_FORCEINLINE uint32_t __SMUSD  (uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3)
{
  uint32_t result;
  __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3)
{
  uint32_t result;
  __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
  return(result);
}
__STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc)
{
  union llreg_u{
    uint32_t w32[2];
    uint64_t w64;
  } llr;
  llr.w64 = acc;
#ifndef __ARMEB__   /* Little endian */
  __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );
#else               /* Big endian */
  __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );
#endif
  return(llr.w64);
}
__STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc)
{
  union llreg_u{
    uint32_t w32[2];
    uint64_t w64;
  } llr;
  llr.w64 = acc;
#ifndef __ARMEB__   /* Little endian */
  __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );
#else               /* Big endian */
  __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );
#endif
  return(llr.w64);
}
__STATIC_FORCEINLINE uint32_t __SEL  (uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE  int32_t __QADD( int32_t op1,  int32_t op2)
{
  int32_t result;
  __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE  int32_t __QSUB( int32_t op1,  int32_t op2)
{
  int32_t result;
  __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
#define __PKHBT(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0x0000FFFFUL) |  \
                                           ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL)  )
#define __PKHTB(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0xFFFF0000UL) |  \
                                           ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL)  )
#define __SXTB16_RORn(ARG1, ARG2)        __SXTB16(__ROR(ARG1, ARG2))
__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3)
{
  int32_t result;
  __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r"  (op1), "r" (op2), "r" (op3) );
  return(result);
}
#endif /* (__ARM_FEATURE_DSP == 1) */
/*@} end of group CMSIS_SIMD_intrinsics */
#endif /* __CMSIS_ARMCLANG_H */
keil/include/CMSIS/Include/cmsis_compiler.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,283 @@
/**************************************************************************//**
 * @file     cmsis_compiler.h
 * @brief    CMSIS compiler generic header file
 * @version  V5.1.0
 * @date     09. October 2018
 ******************************************************************************/
/*
 * Copyright (c) 2009-2018 Arm Limited. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the License); you may
 * not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#ifndef __CMSIS_COMPILER_H
#define __CMSIS_COMPILER_H
#include <stdint.h>
/*
 * Arm Compiler 4/5
 */
#if   defined ( __CC_ARM )
  #include "cmsis_armcc.h"
/*
 * Arm Compiler 6.6 LTM (armclang)
 */
#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) && (__ARMCC_VERSION < 6100100)
  #include "cmsis_armclang_ltm.h"
  /*
 * Arm Compiler above 6.10.1 (armclang)
 */
#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6100100)
  #include "cmsis_armclang.h"
/*
 * GNU Compiler
 */
#elif defined ( __GNUC__ )
  #include "cmsis_gcc.h"
/*
 * IAR Compiler
 */
#elif defined ( __ICCARM__ )
  #include <cmsis_iccarm.h>
/*
 * TI Arm Compiler
 */
#elif defined ( __TI_ARM__ )
  #include <cmsis_ccs.h>
  #ifndef   __ASM
    #define __ASM                                  __asm
  #endif
  #ifndef   __INLINE
    #define __INLINE                               inline
  #endif
  #ifndef   __STATIC_INLINE
    #define __STATIC_INLINE                        static inline
  #endif
  #ifndef   __STATIC_FORCEINLINE
    #define __STATIC_FORCEINLINE                   __STATIC_INLINE
  #endif
  #ifndef   __NO_RETURN
    #define __NO_RETURN                            __attribute__((noreturn))
  #endif
  #ifndef   __USED
    #define __USED                                 __attribute__((used))
  #endif
  #ifndef   __WEAK
    #define __WEAK                                 __attribute__((weak))
  #endif
  #ifndef   __PACKED
    #define __PACKED                               __attribute__((packed))
  #endif
  #ifndef   __PACKED_STRUCT
    #define __PACKED_STRUCT                        struct __attribute__((packed))
  #endif
  #ifndef   __PACKED_UNION
    #define __PACKED_UNION                         union __attribute__((packed))
  #endif
  #ifndef   __UNALIGNED_UINT32        /* deprecated */
    struct __attribute__((packed)) T_UINT32 { uint32_t v; };
    #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)
  #endif
  #ifndef   __UNALIGNED_UINT16_WRITE
    __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };
    #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void*)(addr))->v) = (val))
  #endif
  #ifndef   __UNALIGNED_UINT16_READ
    __PACKED_STRUCT T_UINT16_READ { uint16_t v; };
    #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)
  #endif
  #ifndef   __UNALIGNED_UINT32_WRITE
    __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };
    #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))
  #endif
  #ifndef   __UNALIGNED_UINT32_READ
    __PACKED_STRUCT T_UINT32_READ { uint32_t v; };
    #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)
  #endif
  #ifndef   __ALIGNED
    #define __ALIGNED(x)                           __attribute__((aligned(x)))
  #endif
  #ifndef   __RESTRICT
    #define __RESTRICT                             __restrict
  #endif
  #ifndef   __COMPILER_BARRIER
    #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored.
    #define __COMPILER_BARRIER()                   (void)0
  #endif
/*
 * TASKING Compiler
 */
#elif defined ( __TASKING__ )
  /*
   * The CMSIS functions have been implemented as intrinsics in the compiler.
   * Please use "carm -?i" to get an up to date list of all intrinsics,
   * Including the CMSIS ones.
   */
  #ifndef   __ASM
    #define __ASM                                  __asm
  #endif
  #ifndef   __INLINE
    #define __INLINE                               inline
  #endif
  #ifndef   __STATIC_INLINE
    #define __STATIC_INLINE                        static inline
  #endif
  #ifndef   __STATIC_FORCEINLINE
    #define __STATIC_FORCEINLINE                   __STATIC_INLINE
  #endif
  #ifndef   __NO_RETURN
    #define __NO_RETURN                            __attribute__((noreturn))
  #endif
  #ifndef   __USED
    #define __USED                                 __attribute__((used))
  #endif
  #ifndef   __WEAK
    #define __WEAK                                 __attribute__((weak))
  #endif
  #ifndef   __PACKED
    #define __PACKED                               __packed__
  #endif
  #ifndef   __PACKED_STRUCT
    #define __PACKED_STRUCT                        struct __packed__
  #endif
  #ifndef   __PACKED_UNION
    #define __PACKED_UNION                         union __packed__
  #endif
  #ifndef   __UNALIGNED_UINT32        /* deprecated */
    struct __packed__ T_UINT32 { uint32_t v; };
    #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)
  #endif
  #ifndef   __UNALIGNED_UINT16_WRITE
    __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };
    #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))
  #endif
  #ifndef   __UNALIGNED_UINT16_READ
    __PACKED_STRUCT T_UINT16_READ { uint16_t v; };
    #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)
  #endif
  #ifndef   __UNALIGNED_UINT32_WRITE
    __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };
    #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))
  #endif
  #ifndef   __UNALIGNED_UINT32_READ
    __PACKED_STRUCT T_UINT32_READ { uint32_t v; };
    #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)
  #endif
  #ifndef   __ALIGNED
    #define __ALIGNED(x)              __align(x)
  #endif
  #ifndef   __RESTRICT
    #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored.
    #define __RESTRICT
  #endif
  #ifndef   __COMPILER_BARRIER
    #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored.
    #define __COMPILER_BARRIER()                   (void)0
  #endif
/*
 * COSMIC Compiler
 */
#elif defined ( __CSMC__ )
   #include <cmsis_csm.h>
 #ifndef   __ASM
    #define __ASM                                  _asm
  #endif
  #ifndef   __INLINE
    #define __INLINE                               inline
  #endif
  #ifndef   __STATIC_INLINE
    #define __STATIC_INLINE                        static inline
  #endif
  #ifndef   __STATIC_FORCEINLINE
    #define __STATIC_FORCEINLINE                   __STATIC_INLINE
  #endif
  #ifndef   __NO_RETURN
    // NO RETURN is automatically detected hence no warning here
    #define __NO_RETURN
  #endif
  #ifndef   __USED
    #warning No compiler specific solution for __USED. __USED is ignored.
    #define __USED
  #endif
  #ifndef   __WEAK
    #define __WEAK                                 __weak
  #endif
  #ifndef   __PACKED
    #define __PACKED                               @packed
  #endif
  #ifndef   __PACKED_STRUCT
    #define __PACKED_STRUCT                        @packed struct
  #endif
  #ifndef   __PACKED_UNION
    #define __PACKED_UNION                         @packed union
  #endif
  #ifndef   __UNALIGNED_UINT32        /* deprecated */
    @packed struct T_UINT32 { uint32_t v; };
    #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)
  #endif
  #ifndef   __UNALIGNED_UINT16_WRITE
    __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };
    #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))
  #endif
  #ifndef   __UNALIGNED_UINT16_READ
    __PACKED_STRUCT T_UINT16_READ { uint16_t v; };
    #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)
  #endif
  #ifndef   __UNALIGNED_UINT32_WRITE
    __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };
    #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))
  #endif
  #ifndef   __UNALIGNED_UINT32_READ
    __PACKED_STRUCT T_UINT32_READ { uint32_t v; };
    #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)
  #endif
  #ifndef   __ALIGNED
    #warning No compiler specific solution for __ALIGNED. __ALIGNED is ignored.
    #define __ALIGNED(x)
  #endif
  #ifndef   __RESTRICT
    #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored.
    #define __RESTRICT
  #endif
  #ifndef   __COMPILER_BARRIER
    #warning No compiler specific solution for __COMPILER_BARRIER. __COMPILER_BARRIER is ignored.
    #define __COMPILER_BARRIER()                   (void)0
  #endif
#else
  #error Unknown compiler.
#endif
#endif /* __CMSIS_COMPILER_H */
keil/include/CMSIS/Include/cmsis_gcc.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,2177 @@
/**************************************************************************//**
 * @file     cmsis_gcc.h
 * @brief    CMSIS compiler GCC header file
 * @version  V5.3.0
 * @date     26. March 2020
 ******************************************************************************/
/*
 * Copyright (c) 2009-2020 Arm Limited. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the License); you may
 * not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#ifndef __CMSIS_GCC_H
#define __CMSIS_GCC_H
/* ignore some GCC warnings */
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wsign-conversion"
#pragma GCC diagnostic ignored "-Wconversion"
#pragma GCC diagnostic ignored "-Wunused-parameter"
/* Fallback for __has_builtin */
#ifndef __has_builtin
  #define __has_builtin(x) (0)
#endif
/* CMSIS compiler specific defines */
#ifndef   __ASM
  #define __ASM                                  __asm
#endif
#ifndef   __INLINE
  #define __INLINE                               inline
#endif
#ifndef   __STATIC_INLINE
  #define __STATIC_INLINE                        static inline
#endif
#ifndef   __STATIC_FORCEINLINE
  #define __STATIC_FORCEINLINE                   __attribute__((always_inline)) static inline
#endif
#ifndef   __NO_RETURN
  #define __NO_RETURN                            __attribute__((__noreturn__))
#endif
#ifndef   __USED
  #define __USED                                 __attribute__((used))
#endif
#ifndef   __WEAK
  #define __WEAK                                 __attribute__((weak))
#endif
#ifndef   __PACKED
  #define __PACKED                               __attribute__((packed, aligned(1)))
#endif
#ifndef   __PACKED_STRUCT
  #define __PACKED_STRUCT                        struct __attribute__((packed, aligned(1)))
#endif
#ifndef   __PACKED_UNION
  #define __PACKED_UNION                         union __attribute__((packed, aligned(1)))
#endif
#ifndef   __UNALIGNED_UINT32        /* deprecated */
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wpacked"
  #pragma GCC diagnostic ignored "-Wattributes"
  struct __attribute__((packed)) T_UINT32 { uint32_t v; };
  #pragma GCC diagnostic pop
  #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)
#endif
#ifndef   __UNALIGNED_UINT16_WRITE
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wpacked"
  #pragma GCC diagnostic ignored "-Wattributes"
  __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };
  #pragma GCC diagnostic pop
  #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))
#endif
#ifndef   __UNALIGNED_UINT16_READ
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wpacked"
  #pragma GCC diagnostic ignored "-Wattributes"
  __PACKED_STRUCT T_UINT16_READ { uint16_t v; };
  #pragma GCC diagnostic pop
  #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(addr))->v)
#endif
#ifndef   __UNALIGNED_UINT32_WRITE
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wpacked"
  #pragma GCC diagnostic ignored "-Wattributes"
  __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };
  #pragma GCC diagnostic pop
  #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))
#endif
#ifndef   __UNALIGNED_UINT32_READ
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wpacked"
  #pragma GCC diagnostic ignored "-Wattributes"
  __PACKED_STRUCT T_UINT32_READ { uint32_t v; };
  #pragma GCC diagnostic pop
  #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(addr))->v)
#endif
#ifndef   __ALIGNED
  #define __ALIGNED(x)                           __attribute__((aligned(x)))
#endif
#ifndef   __RESTRICT
  #define __RESTRICT                             __restrict
#endif
#ifndef   __COMPILER_BARRIER
  #define __COMPILER_BARRIER()                   __ASM volatile("":::"memory")
#endif
/* #########################  Startup and Lowlevel Init  ######################## */
#ifndef __PROGRAM_START
/**
  \brief   Initializes data and bss sections
  \details This default implementations initialized all data and additional bss
           sections relying on .copy.table and .zero.table specified properly
           in the used linker script.
 */
__STATIC_FORCEINLINE __NO_RETURN void __cmsis_start(void)
{
  extern void _start(void) __NO_RETURN;
  typedef struct {
    uint32_t const* src;
    uint32_t* dest;
    uint32_t  wlen;
  } __copy_table_t;
  typedef struct {
    uint32_t* dest;
    uint32_t  wlen;
  } __zero_table_t;
  extern const __copy_table_t __copy_table_start__;
  extern const __copy_table_t __copy_table_end__;
  extern const __zero_table_t __zero_table_start__;
  extern const __zero_table_t __zero_table_end__;
  for (__copy_table_t const* pTable = &__copy_table_start__; pTable < &__copy_table_end__; ++pTable) {
    for(uint32_t i=0u; i*4<pTable->wlen; ++i) {
      pTable->dest[i] = pTable->src[i];
    }
  }
  for (__zero_table_t const* pTable = &__zero_table_start__; pTable < &__zero_table_end__; ++pTable) {
    for(uint32_t i=0u; i*4<pTable->wlen; ++i) {
      pTable->dest[i] = 0u;
    }
  }
  _start();
}
#define __PROGRAM_START           __cmsis_start
#endif
#ifndef __INITIAL_SP
#define __INITIAL_SP              __StackTop
#endif
#ifndef __STACK_LIMIT
#define __STACK_LIMIT             __StackLimit
#endif
#ifndef __VECTOR_TABLE
#define __VECTOR_TABLE            __Vectors
#endif
#ifndef __VECTOR_TABLE_ATTRIBUTE
#define __VECTOR_TABLE_ATTRIBUTE  __attribute__((used, section(".vectors")))
#endif
/* ###########################  Core Function Access  ########################### */
/** \ingroup  CMSIS_Core_FunctionInterface
    \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions
  @{
 */
/**
  \brief   Enable IRQ Interrupts
  \details Enables IRQ interrupts by clearing the I-bit in the CPSR.
           Can only be executed in Privileged modes.
 */
__STATIC_FORCEINLINE void __enable_irq(void)
{
  __ASM volatile ("cpsie i" : : : "memory");
}
/**
  \brief   Disable IRQ Interrupts
  \details Disables IRQ interrupts by setting the I-bit in the CPSR.
           Can only be executed in Privileged modes.
 */
__STATIC_FORCEINLINE void __disable_irq(void)
{
  __ASM volatile ("cpsid i" : : : "memory");
}
/**
  \brief   Get Control Register
  \details Returns the content of the Control Register.
  \return               Control Register value
 */
__STATIC_FORCEINLINE uint32_t __get_CONTROL(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, control" : "=r" (result) );
  return(result);
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Get Control Register (non-secure)
  \details Returns the content of the non-secure Control Register when in secure mode.
  \return               non-secure Control Register value
 */
__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, control_ns" : "=r" (result) );
  return(result);
}
#endif
/**
  \brief   Set Control Register
  \details Writes the given value to the Control Register.
  \param [in]    control  Control Register value to set
 */
__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control)
{
  __ASM volatile ("MSR control, %0" : : "r" (control) : "memory");
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Set Control Register (non-secure)
  \details Writes the given value to the non-secure Control Register when in secure state.
  \param [in]    control  Control Register value to set
 */
__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control)
{
  __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory");
}
#endif
/**
  \brief   Get IPSR Register
  \details Returns the content of the IPSR Register.
  \return               IPSR Register value
 */
__STATIC_FORCEINLINE uint32_t __get_IPSR(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, ipsr" : "=r" (result) );
  return(result);
}
/**
  \brief   Get APSR Register
  \details Returns the content of the APSR Register.
  \return               APSR Register value
 */
__STATIC_FORCEINLINE uint32_t __get_APSR(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, apsr" : "=r" (result) );
  return(result);
}
/**
  \brief   Get xPSR Register
  \details Returns the content of the xPSR Register.
  \return               xPSR Register value
 */
__STATIC_FORCEINLINE uint32_t __get_xPSR(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, xpsr" : "=r" (result) );
  return(result);
}
/**
  \brief   Get Process Stack Pointer
  \details Returns the current value of the Process Stack Pointer (PSP).
  \return               PSP Register value
 */
__STATIC_FORCEINLINE uint32_t __get_PSP(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, psp"  : "=r" (result) );
  return(result);
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Get Process Stack Pointer (non-secure)
  \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state.
  \return               PSP Register value
 */
__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, psp_ns"  : "=r" (result) );
  return(result);
}
#endif
/**
  \brief   Set Process Stack Pointer
  \details Assigns the given value to the Process Stack Pointer (PSP).
  \param [in]    topOfProcStack  Process Stack Pointer value to set
 */
__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack)
{
  __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : );
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Set Process Stack Pointer (non-secure)
  \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state.
  \param [in]    topOfProcStack  Process Stack Pointer value to set
 */
__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack)
{
  __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : );
}
#endif
/**
  \brief   Get Main Stack Pointer
  \details Returns the current value of the Main Stack Pointer (MSP).
  \return               MSP Register value
 */
__STATIC_FORCEINLINE uint32_t __get_MSP(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, msp" : "=r" (result) );
  return(result);
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Get Main Stack Pointer (non-secure)
  \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state.
  \return               MSP Register value
 */
__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, msp_ns" : "=r" (result) );
  return(result);
}
#endif
/**
  \brief   Set Main Stack Pointer
  \details Assigns the given value to the Main Stack Pointer (MSP).
  \param [in]    topOfMainStack  Main Stack Pointer value to set
 */
__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack)
{
  __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : );
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Set Main Stack Pointer (non-secure)
  \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state.
  \param [in]    topOfMainStack  Main Stack Pointer value to set
 */
__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack)
{
  __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : );
}
#endif
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Get Stack Pointer (non-secure)
  \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state.
  \return               SP Register value
 */
__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, sp_ns" : "=r" (result) );
  return(result);
}
/**
  \brief   Set Stack Pointer (non-secure)
  \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state.
  \param [in]    topOfStack  Stack Pointer value to set
 */
__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack)
{
  __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : );
}
#endif
/**
  \brief   Get Priority Mask
  \details Returns the current state of the priority mask bit from the Priority Mask Register.
  \return               Priority Mask value
 */
__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, primask" : "=r" (result) );
  return(result);
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Get Priority Mask (non-secure)
  \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state.
  \return               Priority Mask value
 */
__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, primask_ns" : "=r" (result) );
  return(result);
}
#endif
/**
  \brief   Set Priority Mask
  \details Assigns the given value to the Priority Mask Register.
  \param [in]    priMask  Priority Mask
 */
__STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask)
{
  __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory");
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Set Priority Mask (non-secure)
  \details Assigns the given value to the non-secure Priority Mask Register when in secure state.
  \param [in]    priMask  Priority Mask
 */
__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask)
{
  __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory");
}
#endif
#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \
     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \
     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    )
/**
  \brief   Enable FIQ
  \details Enables FIQ interrupts by clearing the F-bit in the CPSR.
           Can only be executed in Privileged modes.
 */
__STATIC_FORCEINLINE void __enable_fault_irq(void)
{
  __ASM volatile ("cpsie f" : : : "memory");
}
/**
  \brief   Disable FIQ
  \details Disables FIQ interrupts by setting the F-bit in the CPSR.
           Can only be executed in Privileged modes.
 */
__STATIC_FORCEINLINE void __disable_fault_irq(void)
{
  __ASM volatile ("cpsid f" : : : "memory");
}
/**
  \brief   Get Base Priority
  \details Returns the current value of the Base Priority register.
  \return               Base Priority register value
 */
__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, basepri" : "=r" (result) );
  return(result);
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Get Base Priority (non-secure)
  \details Returns the current value of the non-secure Base Priority register when in secure state.
  \return               Base Priority register value
 */
__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) );
  return(result);
}
#endif
/**
  \brief   Set Base Priority
  \details Assigns the given value to the Base Priority register.
  \param [in]    basePri  Base Priority value to set
 */
__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri)
{
  __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory");
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Set Base Priority (non-secure)
  \details Assigns the given value to the non-secure Base Priority register when in secure state.
  \param [in]    basePri  Base Priority value to set
 */
__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri)
{
  __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory");
}
#endif
/**
  \brief   Set Base Priority with condition
  \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled,
           or the new value increases the BASEPRI priority level.
  \param [in]    basePri  Base Priority value to set
 */
__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri)
{
  __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory");
}
/**
  \brief   Get Fault Mask
  \details Returns the current value of the Fault Mask register.
  \return               Fault Mask register value
 */
__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, faultmask" : "=r" (result) );
  return(result);
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Get Fault Mask (non-secure)
  \details Returns the current value of the non-secure Fault Mask register when in secure state.
  \return               Fault Mask register value
 */
__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void)
{
  uint32_t result;
  __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) );
  return(result);
}
#endif
/**
  \brief   Set Fault Mask
  \details Assigns the given value to the Fault Mask register.
  \param [in]    faultMask  Fault Mask value to set
 */
__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask)
{
  __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory");
}
#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Set Fault Mask (non-secure)
  \details Assigns the given value to the non-secure Fault Mask register when in secure state.
  \param [in]    faultMask  Fault Mask value to set
 */
__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask)
{
  __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory");
}
#endif
#endif /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \
           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \
           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    ) */
#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )
/**
  \brief   Get Process Stack Pointer Limit
  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
  Stack Pointer Limit register hence zero is returned always in non-secure
  mode.
  \details Returns the current value of the Process Stack Pointer Limit (PSPLIM).
  \return               PSPLIM Register value
 */
__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void)
{
#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
    // without main extensions, the non-secure PSPLIM is RAZ/WI
  return 0U;
#else
  uint32_t result;
  __ASM volatile ("MRS %0, psplim"  : "=r" (result) );
  return result;
#endif
}
#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3))
/**
  \brief   Get Process Stack Pointer Limit (non-secure)
  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
  Stack Pointer Limit register hence zero is returned always.
  \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state.
  \return               PSPLIM Register value
 */
__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void)
{
#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))
  // without main extensions, the non-secure PSPLIM is RAZ/WI
  return 0U;
#else
  uint32_t result;
  __ASM volatile ("MRS %0, psplim_ns"  : "=r" (result) );
  return result;
#endif
}
#endif
/**
  \brief   Set Process Stack Pointer Limit
  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
  Stack Pointer Limit register hence the write is silently ignored in non-secure
  mode.
  \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM).
  \param [in]    ProcStackPtrLimit  Process Stack Pointer Limit value to set
 */
__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit)
{
#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
  // without main extensions, the non-secure PSPLIM is RAZ/WI
  (void)ProcStackPtrLimit;
#else
  __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit));
#endif
}
#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))
/**
  \brief   Set Process Stack Pointer (non-secure)
  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
  Stack Pointer Limit register hence the write is silently ignored.
  \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state.
  \param [in]    ProcStackPtrLimit  Process Stack Pointer Limit value to set
 */
__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit)
{
#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))
  // without main extensions, the non-secure PSPLIM is RAZ/WI
  (void)ProcStackPtrLimit;
#else
  __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit));
#endif
}
#endif
/**
  \brief   Get Main Stack Pointer Limit
  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
  Stack Pointer Limit register hence zero is returned always in non-secure
  mode.
  \details Returns the current value of the Main Stack Pointer Limit (MSPLIM).
  \return               MSPLIM Register value
 */
__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void)
{
#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
  // without main extensions, the non-secure MSPLIM is RAZ/WI
  return 0U;
#else
  uint32_t result;
  __ASM volatile ("MRS %0, msplim" : "=r" (result) );
  return result;
#endif
}
#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))
/**
  \brief   Get Main Stack Pointer Limit (non-secure)
  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
  Stack Pointer Limit register hence zero is returned always.
  \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state.
  \return               MSPLIM Register value
 */
__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void)
{
#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))
  // without main extensions, the non-secure MSPLIM is RAZ/WI
  return 0U;
#else
  uint32_t result;
  __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) );
  return result;
#endif
}
#endif
/**
  \brief   Set Main Stack Pointer Limit
  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
  Stack Pointer Limit register hence the write is silently ignored in non-secure
  mode.
  \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM).
  \param [in]    MainStackPtrLimit  Main Stack Pointer Limit value to set
 */
__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit)
{
#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
    (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
  // without main extensions, the non-secure MSPLIM is RAZ/WI
  (void)MainStackPtrLimit;
#else
  __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit));
#endif
}
#if (defined (__ARM_FEATURE_CMSE  ) && (__ARM_FEATURE_CMSE   == 3))
/**
  \brief   Set Main Stack Pointer Limit (non-secure)
  Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure
  Stack Pointer Limit register hence the write is silently ignored.
  \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state.
  \param [in]    MainStackPtrLimit  Main Stack Pointer value to set
 */
__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit)
{
#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))
  // without main extensions, the non-secure MSPLIM is RAZ/WI
  (void)MainStackPtrLimit;
#else
  __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit));
#endif
}
#endif
#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
           (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    ) */
/**
  \brief   Get FPSCR
  \details Returns the current value of the Floating Point Status/Control register.
  \return               Floating Point Status/Control register value
 */
__STATIC_FORCEINLINE uint32_t __get_FPSCR(void)
{
#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \
     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )
#if __has_builtin(__builtin_arm_get_fpscr)
// Re-enable using built-in when GCC has been fixed
// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2)
  /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */
  return __builtin_arm_get_fpscr();
#else
  uint32_t result;
  __ASM volatile ("VMRS %0, fpscr" : "=r" (result) );
  return(result);
#endif
#else
  return(0U);
#endif
}
/**
  \brief   Set FPSCR
  \details Assigns the given value to the Floating Point Status/Control register.
  \param [in]    fpscr  Floating Point Status/Control value to set
 */
__STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr)
{
#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \
     (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )
#if __has_builtin(__builtin_arm_set_fpscr)
// Re-enable using built-in when GCC has been fixed
// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2)
  /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */
  __builtin_arm_set_fpscr(fpscr);
#else
  __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc", "memory");
#endif
#else
  (void)fpscr;
#endif
}
/*@} end of CMSIS_Core_RegAccFunctions */
/* ##########################  Core Instruction Access  ######################### */
/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface
  Access to dedicated instructions
  @{
*/
/* Define macros for porting to both thumb1 and thumb2.
 * For thumb1, use low register (r0-r7), specified by constraint "l"
 * Otherwise, use general registers, specified by constraint "r" */
#if defined (__thumb__) && !defined (__thumb2__)
#define __CMSIS_GCC_OUT_REG(r) "=l" (r)
#define __CMSIS_GCC_RW_REG(r) "+l" (r)
#define __CMSIS_GCC_USE_REG(r) "l" (r)
#else
#define __CMSIS_GCC_OUT_REG(r) "=r" (r)
#define __CMSIS_GCC_RW_REG(r) "+r" (r)
#define __CMSIS_GCC_USE_REG(r) "r" (r)
#endif
/**
  \brief   No Operation
  \details No Operation does nothing. This instruction can be used for code alignment purposes.
 */
#define __NOP()                             __ASM volatile ("nop")
/**
  \brief   Wait For Interrupt
  \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs.
 */
#define __WFI()                             __ASM volatile ("wfi":::"memory")
/**
  \brief   Wait For Event
  \details Wait For Event is a hint instruction that permits the processor to enter
           a low-power state until one of a number of events occurs.
 */
#define __WFE()                             __ASM volatile ("wfe":::"memory")
/**
  \brief   Send Event
  \details Send Event is a hint instruction. It causes an event to be signaled to the CPU.
 */
#define __SEV()                             __ASM volatile ("sev")
/**
  \brief   Instruction Synchronization Barrier
  \details Instruction Synchronization Barrier flushes the pipeline in the processor,
           so that all instructions following the ISB are fetched from cache or memory,
           after the instruction has been completed.
 */
__STATIC_FORCEINLINE void __ISB(void)
{
  __ASM volatile ("isb 0xF":::"memory");
}
/**
  \brief   Data Synchronization Barrier
  \details Acts as a special kind of Data Memory Barrier.
           It completes when all explicit memory accesses before this instruction complete.
 */
__STATIC_FORCEINLINE void __DSB(void)
{
  __ASM volatile ("dsb 0xF":::"memory");
}
/**
  \brief   Data Memory Barrier
  \details Ensures the apparent order of the explicit memory operations before
           and after the instruction, without ensuring their completion.
 */
__STATIC_FORCEINLINE void __DMB(void)
{
  __ASM volatile ("dmb 0xF":::"memory");
}
/**
  \brief   Reverse byte order (32 bit)
  \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412.
  \param [in]    value  Value to reverse
  \return               Reversed value
 */
__STATIC_FORCEINLINE uint32_t __REV(uint32_t value)
{
#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
  return __builtin_bswap32(value);
#else
  uint32_t result;
  __ASM ("rev %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );
  return result;
#endif
}
/**
  \brief   Reverse byte order (16 bit)
  \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856.
  \param [in]    value  Value to reverse
  \return               Reversed value
 */
__STATIC_FORCEINLINE uint32_t __REV16(uint32_t value)
{
  uint32_t result;
  __ASM ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );
  return result;
}
/**
  \brief   Reverse byte order (16 bit)
  \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000.
  \param [in]    value  Value to reverse
  \return               Reversed value
 */
__STATIC_FORCEINLINE int16_t __REVSH(int16_t value)
{
#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
  return (int16_t)__builtin_bswap16(value);
#else
  int16_t result;
  __ASM ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );
  return result;
#endif
}
/**
  \brief   Rotate Right in unsigned value (32 bit)
  \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.
  \param [in]    op1  Value to rotate
  \param [in]    op2  Number of Bits to rotate
  \return               Rotated value
 */
__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2)
{
  op2 %= 32U;
  if (op2 == 0U)
  {
    return op1;
  }
  return (op1 >> op2) | (op1 << (32U - op2));
}
/**
  \brief   Breakpoint
  \details Causes the processor to enter Debug state.
           Debug tools can use this to investigate system state when the instruction at a particular address is reached.
  \param [in]    value  is ignored by the processor.
                 If required, a debugger can use it to store additional information about the breakpoint.
 */
#define __BKPT(value)                       __ASM volatile ("bkpt "#value)
/**
  \brief   Reverse bit order of value
  \details Reverses the bit order of the given value.
  \param [in]    value  Value to reverse
  \return               Reversed value
 */
__STATIC_FORCEINLINE uint32_t __RBIT(uint32_t value)
{
  uint32_t result;
#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \
     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \
     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    )
   __ASM ("rbit %0, %1" : "=r" (result) : "r" (value) );
#else
  uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */
  result = value;                      /* r will be reversed bits of v; first get LSB of v */
  for (value >>= 1U; value != 0U; value >>= 1U)
  {
    result <<= 1U;
    result |= value & 1U;
    s--;
  }
  result <<= s;                        /* shift when v's highest bits are zero */
#endif
  return result;
}
/**
  \brief   Count leading zeros
  \details Counts the number of leading zeros of a data value.
  \param [in]  value  Value to count the leading zeros
  \return             number of leading zeros in value
 */
__STATIC_FORCEINLINE uint8_t __CLZ(uint32_t value)
{
  /* Even though __builtin_clz produces a CLZ instruction on ARM, formally
     __builtin_clz(0) is undefined behaviour, so handle this case specially.
     This guarantees ARM-compatible results if happening to compile on a non-ARM
     target, and ensures the compiler doesn't decide to activate any
     optimisations using the logic "value was passed to __builtin_clz, so it
     is non-zero".
     ARM GCC 7.3 and possibly earlier will optimise this test away, leaving a
     single CLZ instruction.
   */
  if (value == 0U)
  {
    return 32U;
  }
  return __builtin_clz(value);
}
#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \
     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \
     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )
/**
  \brief   LDR Exclusive (8 bit)
  \details Executes a exclusive LDR instruction for 8 bit value.
  \param [in]    ptr  Pointer to data
  \return             value of type uint8_t at (*ptr)
 */
__STATIC_FORCEINLINE uint8_t __LDREXB(volatile uint8_t *addr)
{
    uint32_t result;
#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
   __ASM volatile ("ldrexb %0, %1" : "=r" (result) : "Q" (*addr) );
#else
    /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not
       accepted by assembler. So has to use following less efficient pattern.
    */
   __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) : "memory" );
#endif
   return ((uint8_t) result);    /* Add explicit type cast here */
}
/**
  \brief   LDR Exclusive (16 bit)
  \details Executes a exclusive LDR instruction for 16 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint16_t at (*ptr)
 */
__STATIC_FORCEINLINE uint16_t __LDREXH(volatile uint16_t *addr)
{
    uint32_t result;
#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
   __ASM volatile ("ldrexh %0, %1" : "=r" (result) : "Q" (*addr) );
#else
    /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not
       accepted by assembler. So has to use following less efficient pattern.
    */
   __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) : "memory" );
#endif
   return ((uint16_t) result);    /* Add explicit type cast here */
}
/**
  \brief   LDR Exclusive (32 bit)
  \details Executes a exclusive LDR instruction for 32 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint32_t at (*ptr)
 */
__STATIC_FORCEINLINE uint32_t __LDREXW(volatile uint32_t *addr)
{
    uint32_t result;
   __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
   return(result);
}
/**
  \brief   STR Exclusive (8 bit)
  \details Executes a exclusive STR instruction for 8 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
  \return          0  Function succeeded
  \return          1  Function failed
 */
__STATIC_FORCEINLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr)
{
   uint32_t result;
   __ASM volatile ("strexb %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) );
   return(result);
}
/**
  \brief   STR Exclusive (16 bit)
  \details Executes a exclusive STR instruction for 16 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
  \return          0  Function succeeded
  \return          1  Function failed
 */
__STATIC_FORCEINLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr)
{
   uint32_t result;
   __ASM volatile ("strexh %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) );
   return(result);
}
/**
  \brief   STR Exclusive (32 bit)
  \details Executes a exclusive STR instruction for 32 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
  \return          0  Function succeeded
  \return          1  Function failed
 */
__STATIC_FORCEINLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr)
{
   uint32_t result;
   __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
   return(result);
}
/**
  \brief   Remove the exclusive lock
  \details Removes the exclusive lock which is created by LDREX.
 */
__STATIC_FORCEINLINE void __CLREX(void)
{
  __ASM volatile ("clrex" ::: "memory");
}
#endif /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \
           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \
           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
           (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    ) */
#if ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \
     (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \
     (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    )
/**
  \brief   Signed Saturate
  \details Saturates a signed value.
  \param [in]  ARG1  Value to be saturated
  \param [in]  ARG2  Bit position to saturate to (1..32)
  \return             Saturated value
 */
#define __SSAT(ARG1, ARG2) \
__extension__ \
({                          \
  int32_t __RES, __ARG1 = (ARG1); \
  __ASM volatile ("ssat %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) : "cc" ); \
  __RES; \
 })
/**
  \brief   Unsigned Saturate
  \details Saturates an unsigned value.
  \param [in]  ARG1  Value to be saturated
  \param [in]  ARG2  Bit position to saturate to (0..31)
  \return             Saturated value
 */
#define __USAT(ARG1, ARG2) \
 __extension__ \
({                          \
  uint32_t __RES, __ARG1 = (ARG1); \
  __ASM volatile ("usat %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) : "cc" ); \
  __RES; \
 })
/**
  \brief   Rotate Right with Extend (32 bit)
  \details Moves each bit of a bitstring right by one bit.
           The carry input is shifted in at the left end of the bitstring.
  \param [in]    value  Value to rotate
  \return               Rotated value
 */
__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value)
{
  uint32_t result;
  __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );
  return(result);
}
/**
  \brief   LDRT Unprivileged (8 bit)
  \details Executes a Unprivileged LDRT instruction for 8 bit value.
  \param [in]    ptr  Pointer to data
  \return             value of type uint8_t at (*ptr)
 */
__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr)
{
    uint32_t result;
#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
   __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) );
#else
    /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not
       accepted by assembler. So has to use following less efficient pattern.
    */
   __ASM volatile ("ldrbt %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" );
#endif
   return ((uint8_t) result);    /* Add explicit type cast here */
}
/**
  \brief   LDRT Unprivileged (16 bit)
  \details Executes a Unprivileged LDRT instruction for 16 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint16_t at (*ptr)
 */
__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr)
{
    uint32_t result;
#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
   __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) );
#else
    /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not
       accepted by assembler. So has to use following less efficient pattern.
    */
   __ASM volatile ("ldrht %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" );
#endif
   return ((uint16_t) result);    /* Add explicit type cast here */
}
/**
  \brief   LDRT Unprivileged (32 bit)
  \details Executes a Unprivileged LDRT instruction for 32 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint32_t at (*ptr)
 */
__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr)
{
    uint32_t result;
   __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) );
   return(result);
}
/**
  \brief   STRT Unprivileged (8 bit)
  \details Executes a Unprivileged STRT instruction for 8 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
 */
__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr)
{
   __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) );
}
/**
  \brief   STRT Unprivileged (16 bit)
  \details Executes a Unprivileged STRT instruction for 16 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
 */
__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr)
{
   __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) );
}
/**
  \brief   STRT Unprivileged (32 bit)
  \details Executes a Unprivileged STRT instruction for 32 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
 */
__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr)
{
   __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) );
}
#else  /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \
           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \
           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    ) */
/**
  \brief   Signed Saturate
  \details Saturates a signed value.
  \param [in]  value  Value to be saturated
  \param [in]    sat  Bit position to saturate to (1..32)
  \return             Saturated value
 */
__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat)
{
  if ((sat >= 1U) && (sat <= 32U))
  {
    const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U);
    const int32_t min = -1 - max ;
    if (val > max)
    {
      return max;
    }
    else if (val < min)
    {
      return min;
    }
  }
  return val;
}
/**
  \brief   Unsigned Saturate
  \details Saturates an unsigned value.
  \param [in]  value  Value to be saturated
  \param [in]    sat  Bit position to saturate to (0..31)
  \return             Saturated value
 */
__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat)
{
  if (sat <= 31U)
  {
    const uint32_t max = ((1U << sat) - 1U);
    if (val > (int32_t)max)
    {
      return max;
    }
    else if (val < 0)
    {
      return 0U;
    }
  }
  return (uint32_t)val;
}
#endif /* ((defined (__ARM_ARCH_7M__      ) && (__ARM_ARCH_7M__      == 1)) || \
           (defined (__ARM_ARCH_7EM__     ) && (__ARM_ARCH_7EM__     == 1)) || \
           (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))    ) */
#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )
/**
  \brief   Load-Acquire (8 bit)
  \details Executes a LDAB instruction for 8 bit value.
  \param [in]    ptr  Pointer to data
  \return             value of type uint8_t at (*ptr)
 */
__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr)
{
    uint32_t result;
   __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" );
   return ((uint8_t) result);
}
/**
  \brief   Load-Acquire (16 bit)
  \details Executes a LDAH instruction for 16 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint16_t at (*ptr)
 */
__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr)
{
    uint32_t result;
   __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" );
   return ((uint16_t) result);
}
/**
  \brief   Load-Acquire (32 bit)
  \details Executes a LDA instruction for 32 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint32_t at (*ptr)
 */
__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr)
{
    uint32_t result;
   __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" );
   return(result);
}
/**
  \brief   Store-Release (8 bit)
  \details Executes a STLB instruction for 8 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
 */
__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr)
{
   __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" );
}
/**
  \brief   Store-Release (16 bit)
  \details Executes a STLH instruction for 16 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
 */
__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr)
{
   __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" );
}
/**
  \brief   Store-Release (32 bit)
  \details Executes a STL instruction for 32 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
 */
__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr)
{
   __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" );
}
/**
  \brief   Load-Acquire Exclusive (8 bit)
  \details Executes a LDAB exclusive instruction for 8 bit value.
  \param [in]    ptr  Pointer to data
  \return             value of type uint8_t at (*ptr)
 */
__STATIC_FORCEINLINE uint8_t __LDAEXB(volatile uint8_t *ptr)
{
    uint32_t result;
   __ASM volatile ("ldaexb %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" );
   return ((uint8_t) result);
}
/**
  \brief   Load-Acquire Exclusive (16 bit)
  \details Executes a LDAH exclusive instruction for 16 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint16_t at (*ptr)
 */
__STATIC_FORCEINLINE uint16_t __LDAEXH(volatile uint16_t *ptr)
{
    uint32_t result;
   __ASM volatile ("ldaexh %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" );
   return ((uint16_t) result);
}
/**
  \brief   Load-Acquire Exclusive (32 bit)
  \details Executes a LDA exclusive instruction for 32 bit values.
  \param [in]    ptr  Pointer to data
  \return        value of type uint32_t at (*ptr)
 */
__STATIC_FORCEINLINE uint32_t __LDAEX(volatile uint32_t *ptr)
{
    uint32_t result;
   __ASM volatile ("ldaex %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" );
   return(result);
}
/**
  \brief   Store-Release Exclusive (8 bit)
  \details Executes a STLB exclusive instruction for 8 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
  \return          0  Function succeeded
  \return          1  Function failed
 */
__STATIC_FORCEINLINE uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr)
{
   uint32_t result;
   __ASM volatile ("stlexb %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" );
   return(result);
}
/**
  \brief   Store-Release Exclusive (16 bit)
  \details Executes a STLH exclusive instruction for 16 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
  \return          0  Function succeeded
  \return          1  Function failed
 */
__STATIC_FORCEINLINE uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr)
{
   uint32_t result;
   __ASM volatile ("stlexh %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" );
   return(result);
}
/**
  \brief   Store-Release Exclusive (32 bit)
  \details Executes a STL exclusive instruction for 32 bit values.
  \param [in]  value  Value to store
  \param [in]    ptr  Pointer to location
  \return          0  Function succeeded
  \return          1  Function failed
 */
__STATIC_FORCEINLINE uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr)
{
   uint32_t result;
   __ASM volatile ("stlex %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" );
   return(result);
}
#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
           (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    ) */
/*@}*/ /* end of group CMSIS_Core_InstructionInterface */
/* ###################  Compiler specific Intrinsics  ########################### */
/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics
  Access to dedicated SIMD instructions
  @{
*/
#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))
__STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3)
{
  uint32_t result;
  __ASM ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
  return(result);
}
#define __SSAT16(ARG1, ARG2) \
({                          \
  int32_t __RES, __ARG1 = (ARG1); \
  __ASM volatile ("ssat16 %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) : "cc" ); \
  __RES; \
 })
#define __USAT16(ARG1, ARG2) \
({                          \
  uint32_t __RES, __ARG1 = (ARG1); \
  __ASM volatile ("usat16 %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) : "cc" ); \
  __RES; \
 })
__STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1)
{
  uint32_t result;
  __ASM ("uxtb16 %0, %1" : "=r" (result) : "r" (op1));
  return(result);
}
__STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1)
{
  uint32_t result;
  __ASM ("sxtb16 %0, %1" : "=r" (result) : "r" (op1));
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SXTB16_RORn(uint32_t op1, uint32_t rotate)
{
  uint32_t result;
  __ASM ("sxtb16 %0, %1, ROR %2" : "=r" (result) : "r" (op1), "i" (rotate) );
  return result;
}
__STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SMUAD  (uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3)
{
  uint32_t result;
  __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3)
{
  uint32_t result;
  __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
  return(result);
}
__STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc)
{
  union llreg_u{
    uint32_t w32[2];
    uint64_t w64;
  } llr;
  llr.w64 = acc;
#ifndef __ARMEB__   /* Little endian */
  __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );
#else               /* Big endian */
  __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );
#endif
  return(llr.w64);
}
__STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc)
{
  union llreg_u{
    uint32_t w32[2];
    uint64_t w64;
  } llr;
  llr.w64 = acc;
#ifndef __ARMEB__   /* Little endian */
  __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );
#else               /* Big endian */
  __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );
#endif
  return(llr.w64);
}
__STATIC_FORCEINLINE uint32_t __SMUSD  (uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3)
{
  uint32_t result;
  __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
  return(result);
}
__STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3)
{
  uint32_t result;
  __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
  return(result);
}
__STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc)
{
  union llreg_u{
    uint32_t w32[2];
    uint64_t w64;
  } llr;
  llr.w64 = acc;
#ifndef __ARMEB__   /* Little endian */
  __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );
#else               /* Big endian */
  __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );
#endif
  return(llr.w64);
}
__STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc)
{
  union llreg_u{
    uint32_t w32[2];
    uint64_t w64;
  } llr;
  llr.w64 = acc;
#ifndef __ARMEB__   /* Little endian */
  __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );
#else               /* Big endian */
  __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );
#endif
  return(llr.w64);
}
__STATIC_FORCEINLINE uint32_t __SEL  (uint32_t op1, uint32_t op2)
{
  uint32_t result;
  __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE  int32_t __QADD( int32_t op1,  int32_t op2)
{
  int32_t result;
  __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
__STATIC_FORCEINLINE  int32_t __QSUB( int32_t op1,  int32_t op2)
{
  int32_t result;
  __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
  return(result);
}
#if 0
#define __PKHBT(ARG1,ARG2,ARG3) \
({                          \
  uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \
  __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) :  "r" (__ARG1), "r" (__ARG2), "I" (ARG3)  ); \
  __RES; \
 })
#define __PKHTB(ARG1,ARG2,ARG3) \
({                          \
  uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \
  if (ARG3 == 0) \
    __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) :  "r" (__ARG1), "r" (__ARG2)  ); \
  else \
    __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) :  "r" (__ARG1), "r" (__ARG2), "I" (ARG3)  ); \
  __RES; \
 })
#endif
#define __PKHBT(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0x0000FFFFUL) |  \
                                           ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL)  )
#define __PKHTB(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0xFFFF0000UL) |  \
                                           ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL)  )
__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3)
{
 int32_t result;
 __ASM ("smmla %0, %1, %2, %3" : "=r" (result): "r"  (op1), "r" (op2), "r" (op3) );
 return(result);
}
#endif /* (__ARM_FEATURE_DSP == 1) */
/*@} end of group CMSIS_SIMD_intrinsics */
#pragma GCC diagnostic pop
#endif /* __CMSIS_GCC_H */
keil/include/CMSIS/Include/cmsis_iccarm.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,968 @@
/**************************************************************************//**
 * @file     cmsis_iccarm.h
 * @brief    CMSIS compiler ICCARM (IAR Compiler for Arm) header file
 * @version  V5.2.0
 * @date     28. January 2020
 ******************************************************************************/
//------------------------------------------------------------------------------
//
// Copyright (c) 2017-2019 IAR Systems
// Copyright (c) 2017-2019 Arm Limited. All rights reserved.
//
// SPDX-License-Identifier: Apache-2.0
//
// Licensed under the Apache License, Version 2.0 (the "License")
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
//------------------------------------------------------------------------------
#ifndef __CMSIS_ICCARM_H__
#define __CMSIS_ICCARM_H__
#ifndef __ICCARM__
  #error This file should only be compiled by ICCARM
#endif
#pragma system_include
#define __IAR_FT _Pragma("inline=forced") __intrinsic
#if (__VER__ >= 8000000)
  #define __ICCARM_V8 1
#else
  #define __ICCARM_V8 0
#endif
#ifndef __ALIGNED
  #if __ICCARM_V8
    #define __ALIGNED(x) __attribute__((aligned(x)))
  #elif (__VER__ >= 7080000)
    /* Needs IAR language extensions */
    #define __ALIGNED(x) __attribute__((aligned(x)))
  #else
    #warning No compiler specific solution for __ALIGNED.__ALIGNED is ignored.
    #define __ALIGNED(x)
  #endif
#endif
/* Define compiler macros for CPU architecture, used in CMSIS 5.
 */
#if __ARM_ARCH_6M__ || __ARM_ARCH_7M__ || __ARM_ARCH_7EM__ || __ARM_ARCH_8M_BASE__ || __ARM_ARCH_8M_MAIN__
/* Macros already defined */
#else
  #if defined(__ARM8M_MAINLINE__) || defined(__ARM8EM_MAINLINE__)
    #define __ARM_ARCH_8M_MAIN__ 1
  #elif defined(__ARM8M_BASELINE__)
    #define __ARM_ARCH_8M_BASE__ 1
  #elif defined(__ARM_ARCH_PROFILE) && __ARM_ARCH_PROFILE == 'M'
    #if __ARM_ARCH == 6
      #define __ARM_ARCH_6M__ 1
    #elif __ARM_ARCH == 7
      #if __ARM_FEATURE_DSP
        #define __ARM_ARCH_7EM__ 1
      #else
        #define __ARM_ARCH_7M__ 1
      #endif
    #endif /* __ARM_ARCH */
  #endif /* __ARM_ARCH_PROFILE == 'M' */
#endif
/* Alternativ core deduction for older ICCARM's */
#if !defined(__ARM_ARCH_6M__) && !defined(__ARM_ARCH_7M__) && !defined(__ARM_ARCH_7EM__) && \
    !defined(__ARM_ARCH_8M_BASE__) && !defined(__ARM_ARCH_8M_MAIN__)
  #if defined(__ARM6M__) && (__CORE__ == __ARM6M__)
    #define __ARM_ARCH_6M__ 1
  #elif defined(__ARM7M__) && (__CORE__ == __ARM7M__)
    #define __ARM_ARCH_7M__ 1
  #elif defined(__ARM7EM__) && (__CORE__ == __ARM7EM__)
    #define __ARM_ARCH_7EM__  1
  #elif defined(__ARM8M_BASELINE__) && (__CORE == __ARM8M_BASELINE__)
    #define __ARM_ARCH_8M_BASE__ 1
  #elif defined(__ARM8M_MAINLINE__) && (__CORE == __ARM8M_MAINLINE__)
    #define __ARM_ARCH_8M_MAIN__ 1
  #elif defined(__ARM8EM_MAINLINE__) && (__CORE == __ARM8EM_MAINLINE__)
    #define __ARM_ARCH_8M_MAIN__ 1
  #else
    #error "Unknown target."
  #endif
#endif
#if defined(__ARM_ARCH_6M__) && __ARM_ARCH_6M__==1
  #define __IAR_M0_FAMILY  1
#elif defined(__ARM_ARCH_8M_BASE__) && __ARM_ARCH_8M_BASE__==1
  #define __IAR_M0_FAMILY  1
#else
  #define __IAR_M0_FAMILY  0
#endif
#ifndef __ASM
  #define __ASM __asm
#endif
#ifndef   __COMPILER_BARRIER
  #define __COMPILER_BARRIER() __ASM volatile("":::"memory")
#endif
#ifndef __INLINE
  #define __INLINE inline
#endif
#ifndef   __NO_RETURN
  #if __ICCARM_V8
    #define __NO_RETURN __attribute__((__noreturn__))
  #else
    #define __NO_RETURN _Pragma("object_attribute=__noreturn")
  #endif
#endif
#ifndef   __PACKED
  #if __ICCARM_V8
    #define __PACKED __attribute__((packed, aligned(1)))
  #else
    /* Needs IAR language extensions */
    #define __PACKED __packed
  #endif
#endif
#ifndef   __PACKED_STRUCT
  #if __ICCARM_V8
    #define __PACKED_STRUCT struct __attribute__((packed, aligned(1)))
  #else
    /* Needs IAR language extensions */
    #define __PACKED_STRUCT __packed struct
  #endif
#endif
#ifndef   __PACKED_UNION
  #if __ICCARM_V8
    #define __PACKED_UNION union __attribute__((packed, aligned(1)))
  #else
    /* Needs IAR language extensions */
    #define __PACKED_UNION __packed union
  #endif
#endif
#ifndef   __RESTRICT
  #if __ICCARM_V8
    #define __RESTRICT            __restrict
  #else
    /* Needs IAR language extensions */
    #define __RESTRICT            restrict
  #endif
#endif
#ifndef   __STATIC_INLINE
  #define __STATIC_INLINE       static inline
#endif
#ifndef   __FORCEINLINE
  #define __FORCEINLINE         _Pragma("inline=forced")
#endif
#ifndef   __STATIC_FORCEINLINE
  #define __STATIC_FORCEINLINE  __FORCEINLINE __STATIC_INLINE
#endif
#ifndef __UNALIGNED_UINT16_READ
#pragma language=save
#pragma language=extended
__IAR_FT uint16_t __iar_uint16_read(void const *ptr)
{
  return *(__packed uint16_t*)(ptr);
}
#pragma language=restore
#define __UNALIGNED_UINT16_READ(PTR) __iar_uint16_read(PTR)
#endif
#ifndef __UNALIGNED_UINT16_WRITE
#pragma language=save
#pragma language=extended
__IAR_FT void __iar_uint16_write(void const *ptr, uint16_t val)
{
  *(__packed uint16_t*)(ptr) = val;;
}
#pragma language=restore
#define __UNALIGNED_UINT16_WRITE(PTR,VAL) __iar_uint16_write(PTR,VAL)
#endif
#ifndef __UNALIGNED_UINT32_READ
#pragma language=save
#pragma language=extended
__IAR_FT uint32_t __iar_uint32_read(void const *ptr)
{
  return *(__packed uint32_t*)(ptr);
}
#pragma language=restore
#define __UNALIGNED_UINT32_READ(PTR) __iar_uint32_read(PTR)
#endif
#ifndef __UNALIGNED_UINT32_WRITE
#pragma language=save
#pragma language=extended
__IAR_FT void __iar_uint32_write(void const *ptr, uint32_t val)
{
  *(__packed uint32_t*)(ptr) = val;;
}
#pragma language=restore
#define __UNALIGNED_UINT32_WRITE(PTR,VAL) __iar_uint32_write(PTR,VAL)
#endif
#ifndef __UNALIGNED_UINT32   /* deprecated */
#pragma language=save
#pragma language=extended
__packed struct  __iar_u32 { uint32_t v; };
#pragma language=restore
#define __UNALIGNED_UINT32(PTR) (((struct __iar_u32 *)(PTR))->v)
#endif
#ifndef   __USED
  #if __ICCARM_V8
    #define __USED __attribute__((used))
  #else
    #define __USED _Pragma("__root")
  #endif
#endif
#ifndef   __WEAK
  #if __ICCARM_V8
    #define __WEAK __attribute__((weak))
  #else
    #define __WEAK _Pragma("__weak")
  #endif
#endif
#ifndef __PROGRAM_START
#define __PROGRAM_START           __iar_program_start
#endif
#ifndef __INITIAL_SP
#define __INITIAL_SP              CSTACK$$Limit
#endif
#ifndef __STACK_LIMIT
#define __STACK_LIMIT             CSTACK$$Base
#endif
#ifndef __VECTOR_TABLE
#define __VECTOR_TABLE            __vector_table
#endif
#ifndef __VECTOR_TABLE_ATTRIBUTE
#define __VECTOR_TABLE_ATTRIBUTE  @".intvec"
#endif
#ifndef __ICCARM_INTRINSICS_VERSION__
  #define __ICCARM_INTRINSICS_VERSION__  0
#endif
#if __ICCARM_INTRINSICS_VERSION__ == 2
  #if defined(__CLZ)
    #undef __CLZ
  #endif
  #if defined(__REVSH)
    #undef __REVSH
  #endif
  #if defined(__RBIT)
    #undef __RBIT
  #endif
  #if defined(__SSAT)
    #undef __SSAT
  #endif
  #if defined(__USAT)
    #undef __USAT
  #endif
  #include "iccarm_builtin.h"
  #define __disable_fault_irq __iar_builtin_disable_fiq
  #define __disable_irq       __iar_builtin_disable_interrupt
  #define __enable_fault_irq  __iar_builtin_enable_fiq
  #define __enable_irq        __iar_builtin_enable_interrupt
  #define __arm_rsr           __iar_builtin_rsr
  #define __arm_wsr           __iar_builtin_wsr
  #define __get_APSR()                (__arm_rsr("APSR"))
  #define __get_BASEPRI()             (__arm_rsr("BASEPRI"))
  #define __get_CONTROL()             (__arm_rsr("CONTROL"))
  #define __get_FAULTMASK()           (__arm_rsr("FAULTMASK"))
  #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \
       (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     )
    #define __get_FPSCR()             (__arm_rsr("FPSCR"))
    #define __set_FPSCR(VALUE)        (__arm_wsr("FPSCR", (VALUE)))
  #else
    #define __get_FPSCR()             ( 0 )
    #define __set_FPSCR(VALUE)        ((void)VALUE)
  #endif
  #define __get_IPSR()                (__arm_rsr("IPSR"))
  #define __get_MSP()                 (__arm_rsr("MSP"))
  #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
       (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
    // without main extensions, the non-secure MSPLIM is RAZ/WI
    #define __get_MSPLIM()            (0U)
  #else
    #define __get_MSPLIM()            (__arm_rsr("MSPLIM"))
  #endif
  #define __get_PRIMASK()             (__arm_rsr("PRIMASK"))
  #define __get_PSP()                 (__arm_rsr("PSP"))
  #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
       (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
    // without main extensions, the non-secure PSPLIM is RAZ/WI
    #define __get_PSPLIM()            (0U)
  #else
    #define __get_PSPLIM()            (__arm_rsr("PSPLIM"))
  #endif
  #define __get_xPSR()                (__arm_rsr("xPSR"))
  #define __set_BASEPRI(VALUE)        (__arm_wsr("BASEPRI", (VALUE)))
  #define __set_BASEPRI_MAX(VALUE)    (__arm_wsr("BASEPRI_MAX", (VALUE)))
  #define __set_CONTROL(VALUE)        (__arm_wsr("CONTROL", (VALUE)))
  #define __set_FAULTMASK(VALUE)      (__arm_wsr("FAULTMASK", (VALUE)))
  #define __set_MSP(VALUE)            (__arm_wsr("MSP", (VALUE)))
  #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
       (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
    // without main extensions, the non-secure MSPLIM is RAZ/WI
    #define __set_MSPLIM(VALUE)       ((void)(VALUE))
  #else
    #define __set_MSPLIM(VALUE)       (__arm_wsr("MSPLIM", (VALUE)))
  #endif
  #define __set_PRIMASK(VALUE)        (__arm_wsr("PRIMASK", (VALUE)))
  #define __set_PSP(VALUE)            (__arm_wsr("PSP", (VALUE)))
  #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
       (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
    // without main extensions, the non-secure PSPLIM is RAZ/WI
    #define __set_PSPLIM(VALUE)       ((void)(VALUE))
  #else
    #define __set_PSPLIM(VALUE)       (__arm_wsr("PSPLIM", (VALUE)))
  #endif
  #define __TZ_get_CONTROL_NS()       (__arm_rsr("CONTROL_NS"))
  #define __TZ_set_CONTROL_NS(VALUE)  (__arm_wsr("CONTROL_NS", (VALUE)))
  #define __TZ_get_PSP_NS()           (__arm_rsr("PSP_NS"))
  #define __TZ_set_PSP_NS(VALUE)      (__arm_wsr("PSP_NS", (VALUE)))
  #define __TZ_get_MSP_NS()           (__arm_rsr("MSP_NS"))
  #define __TZ_set_MSP_NS(VALUE)      (__arm_wsr("MSP_NS", (VALUE)))
  #define __TZ_get_SP_NS()            (__arm_rsr("SP_NS"))
  #define __TZ_set_SP_NS(VALUE)       (__arm_wsr("SP_NS", (VALUE)))
  #define __TZ_get_PRIMASK_NS()       (__arm_rsr("PRIMASK_NS"))
  #define __TZ_set_PRIMASK_NS(VALUE)  (__arm_wsr("PRIMASK_NS", (VALUE)))
  #define __TZ_get_BASEPRI_NS()       (__arm_rsr("BASEPRI_NS"))
  #define __TZ_set_BASEPRI_NS(VALUE)  (__arm_wsr("BASEPRI_NS", (VALUE)))
  #define __TZ_get_FAULTMASK_NS()     (__arm_rsr("FAULTMASK_NS"))
  #define __TZ_set_FAULTMASK_NS(VALUE)(__arm_wsr("FAULTMASK_NS", (VALUE)))
  #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
       (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
    // without main extensions, the non-secure PSPLIM is RAZ/WI
    #define __TZ_get_PSPLIM_NS()      (0U)
    #define __TZ_set_PSPLIM_NS(VALUE) ((void)(VALUE))
  #else
    #define __TZ_get_PSPLIM_NS()      (__arm_rsr("PSPLIM_NS"))
    #define __TZ_set_PSPLIM_NS(VALUE) (__arm_wsr("PSPLIM_NS", (VALUE)))
  #endif
  #define __TZ_get_MSPLIM_NS()        (__arm_rsr("MSPLIM_NS"))
  #define __TZ_set_MSPLIM_NS(VALUE)   (__arm_wsr("MSPLIM_NS", (VALUE)))
  #define __NOP     __iar_builtin_no_operation
  #define __CLZ     __iar_builtin_CLZ
  #define __CLREX   __iar_builtin_CLREX
  #define __DMB     __iar_builtin_DMB
  #define __DSB     __iar_builtin_DSB
  #define __ISB     __iar_builtin_ISB
  #define __LDREXB  __iar_builtin_LDREXB
  #define __LDREXH  __iar_builtin_LDREXH
  #define __LDREXW  __iar_builtin_LDREX
  #define __RBIT    __iar_builtin_RBIT
  #define __REV     __iar_builtin_REV
  #define __REV16   __iar_builtin_REV16
  __IAR_FT int16_t __REVSH(int16_t val)
  {
    return (int16_t) __iar_builtin_REVSH(val);
  }
  #define __ROR     __iar_builtin_ROR
  #define __RRX     __iar_builtin_RRX
  #define __SEV     __iar_builtin_SEV
  #if !__IAR_M0_FAMILY
    #define __SSAT    __iar_builtin_SSAT
  #endif
  #define __STREXB  __iar_builtin_STREXB
  #define __STREXH  __iar_builtin_STREXH
  #define __STREXW  __iar_builtin_STREX
  #if !__IAR_M0_FAMILY
    #define __USAT    __iar_builtin_USAT
  #endif
  #define __WFE     __iar_builtin_WFE
  #define __WFI     __iar_builtin_WFI
  #if __ARM_MEDIA__
    #define __SADD8   __iar_builtin_SADD8
    #define __QADD8   __iar_builtin_QADD8
    #define __SHADD8  __iar_builtin_SHADD8
    #define __UADD8   __iar_builtin_UADD8
    #define __UQADD8  __iar_builtin_UQADD8
    #define __UHADD8  __iar_builtin_UHADD8
    #define __SSUB8   __iar_builtin_SSUB8
    #define __QSUB8   __iar_builtin_QSUB8
    #define __SHSUB8  __iar_builtin_SHSUB8
    #define __USUB8   __iar_builtin_USUB8
    #define __UQSUB8  __iar_builtin_UQSUB8
    #define __UHSUB8  __iar_builtin_UHSUB8
    #define __SADD16  __iar_builtin_SADD16
    #define __QADD16  __iar_builtin_QADD16
    #define __SHADD16 __iar_builtin_SHADD16
    #define __UADD16  __iar_builtin_UADD16
    #define __UQADD16 __iar_builtin_UQADD16
    #define __UHADD16 __iar_builtin_UHADD16
    #define __SSUB16  __iar_builtin_SSUB16
    #define __QSUB16  __iar_builtin_QSUB16
    #define __SHSUB16 __iar_builtin_SHSUB16
    #define __USUB16  __iar_builtin_USUB16
    #define __UQSUB16 __iar_builtin_UQSUB16
    #define __UHSUB16 __iar_builtin_UHSUB16
    #define __SASX    __iar_builtin_SASX
    #define __QASX    __iar_builtin_QASX
    #define __SHASX   __iar_builtin_SHASX
    #define __UASX    __iar_builtin_UASX
    #define __UQASX   __iar_builtin_UQASX
    #define __UHASX   __iar_builtin_UHASX
    #define __SSAX    __iar_builtin_SSAX
    #define __QSAX    __iar_builtin_QSAX
    #define __SHSAX   __iar_builtin_SHSAX
    #define __USAX    __iar_builtin_USAX
    #define __UQSAX   __iar_builtin_UQSAX
    #define __UHSAX   __iar_builtin_UHSAX
    #define __USAD8   __iar_builtin_USAD8
    #define __USADA8  __iar_builtin_USADA8
    #define __SSAT16  __iar_builtin_SSAT16
    #define __USAT16  __iar_builtin_USAT16
    #define __UXTB16  __iar_builtin_UXTB16
    #define __UXTAB16 __iar_builtin_UXTAB16
    #define __SXTB16  __iar_builtin_SXTB16
    #define __SXTAB16 __iar_builtin_SXTAB16
    #define __SMUAD   __iar_builtin_SMUAD
    #define __SMUADX  __iar_builtin_SMUADX
    #define __SMMLA   __iar_builtin_SMMLA
    #define __SMLAD   __iar_builtin_SMLAD
    #define __SMLADX  __iar_builtin_SMLADX
    #define __SMLALD  __iar_builtin_SMLALD
    #define __SMLALDX __iar_builtin_SMLALDX
    #define __SMUSD   __iar_builtin_SMUSD
    #define __SMUSDX  __iar_builtin_SMUSDX
    #define __SMLSD   __iar_builtin_SMLSD
    #define __SMLSDX  __iar_builtin_SMLSDX
    #define __SMLSLD  __iar_builtin_SMLSLD
    #define __SMLSLDX __iar_builtin_SMLSLDX
    #define __SEL     __iar_builtin_SEL
    #define __QADD    __iar_builtin_QADD
    #define __QSUB    __iar_builtin_QSUB
    #define __PKHBT   __iar_builtin_PKHBT
    #define __PKHTB   __iar_builtin_PKHTB
  #endif
#else /* __ICCARM_INTRINSICS_VERSION__ == 2 */
  #if __IAR_M0_FAMILY
   /* Avoid clash between intrinsics.h and arm_math.h when compiling for Cortex-M0. */
    #define __CLZ  __cmsis_iar_clz_not_active
    #define __SSAT __cmsis_iar_ssat_not_active
    #define __USAT __cmsis_iar_usat_not_active
    #define __RBIT __cmsis_iar_rbit_not_active
    #define __get_APSR  __cmsis_iar_get_APSR_not_active
  #endif
  #if (!((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \
         (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     ))
    #define __get_FPSCR __cmsis_iar_get_FPSR_not_active
    #define __set_FPSCR __cmsis_iar_set_FPSR_not_active
  #endif
  #ifdef __INTRINSICS_INCLUDED
  #error intrinsics.h is already included previously!
  #endif
  #include <intrinsics.h>
  #if __IAR_M0_FAMILY
   /* Avoid clash between intrinsics.h and arm_math.h when compiling for Cortex-M0. */
    #undef __CLZ
    #undef __SSAT
    #undef __USAT
    #undef __RBIT
    #undef __get_APSR
    __STATIC_INLINE uint8_t __CLZ(uint32_t data)
    {
      if (data == 0U) { return 32U; }
      uint32_t count = 0U;
      uint32_t mask = 0x80000000U;
      while ((data & mask) == 0U)
      {
        count += 1U;
        mask = mask >> 1U;
      }
      return count;
    }
    __STATIC_INLINE uint32_t __RBIT(uint32_t v)
    {
      uint8_t sc = 31U;
      uint32_t r = v;
      for (v >>= 1U; v; v >>= 1U)
      {
        r <<= 1U;
        r |= v & 1U;
        sc--;
      }
      return (r << sc);
    }
    __STATIC_INLINE  uint32_t __get_APSR(void)
    {
      uint32_t res;
      __asm("MRS      %0,APSR" : "=r" (res));
      return res;
    }
  #endif
  #if (!((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \
         (defined (__FPU_USED   ) && (__FPU_USED    == 1U))     ))
    #undef __get_FPSCR
    #undef __set_FPSCR
    #define __get_FPSCR()       (0)
    #define __set_FPSCR(VALUE)  ((void)VALUE)
  #endif
  #pragma diag_suppress=Pe940
  #pragma diag_suppress=Pe177
  #define __enable_irq    __enable_interrupt
  #define __disable_irq   __disable_interrupt
  #define __NOP           __no_operation
  #define __get_xPSR      __get_PSR
  #if (!defined(__ARM_ARCH_6M__) || __ARM_ARCH_6M__==0)
    __IAR_FT uint32_t __LDREXW(uint32_t volatile *ptr)
    {
      return __LDREX((unsigned long *)ptr);
    }
    __IAR_FT uint32_t __STREXW(uint32_t value, uint32_t volatile *ptr)
    {
      return __STREX(value, (unsigned long *)ptr);
    }
  #endif
  /* __CORTEX_M is defined in core_cm0.h, core_cm3.h and core_cm4.h. */
  #if (__CORTEX_M >= 0x03)
    __IAR_FT uint32_t __RRX(uint32_t value)
    {
      uint32_t result;
      __ASM volatile("RRX      %0, %1" : "=r"(result) : "r" (value));
      return(result);
    }
    __IAR_FT void __set_BASEPRI_MAX(uint32_t value)
    {
      __asm volatile("MSR      BASEPRI_MAX,%0"::"r" (value));
    }
    #define __enable_fault_irq  __enable_fiq
    #define __disable_fault_irq __disable_fiq
  #endif /* (__CORTEX_M >= 0x03) */
  __IAR_FT uint32_t __ROR(uint32_t op1, uint32_t op2)
  {
    return (op1 >> op2) | (op1 << ((sizeof(op1)*8)-op2));
  }
  #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
       (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )
   __IAR_FT uint32_t __get_MSPLIM(void)
    {
      uint32_t res;
    #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
         (!defined (__ARM_FEATURE_CMSE  ) || (__ARM_FEATURE_CMSE   < 3)))
      // without main extensions, the non-secure MSPLIM is RAZ/WI
      res = 0U;
    #else
      __asm volatile("MRS      %0,MSPLIM" : "=r" (res));
    #endif
      return res;
    }
    __IAR_FT void   __set_MSPLIM(uint32_t value)
    {
    #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
         (!defined (__ARM_FEATURE_CMSE  ) || (__ARM_FEATURE_CMSE   < 3)))
      // without main extensions, the non-secure MSPLIM is RAZ/WI
      (void)value;
    #else
      __asm volatile("MSR      MSPLIM,%0" :: "r" (value));
    #endif
    }
    __IAR_FT uint32_t __get_PSPLIM(void)
    {
      uint32_t res;
    #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
         (!defined (__ARM_FEATURE_CMSE  ) || (__ARM_FEATURE_CMSE   < 3)))
      // without main extensions, the non-secure PSPLIM is RAZ/WI
      res = 0U;
    #else
      __asm volatile("MRS      %0,PSPLIM" : "=r" (res));
    #endif
      return res;
    }
    __IAR_FT void   __set_PSPLIM(uint32_t value)
    {
    #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
         (!defined (__ARM_FEATURE_CMSE  ) || (__ARM_FEATURE_CMSE   < 3)))
      // without main extensions, the non-secure PSPLIM is RAZ/WI
      (void)value;
    #else
      __asm volatile("MSR      PSPLIM,%0" :: "r" (value));
    #endif
    }
    __IAR_FT uint32_t __TZ_get_CONTROL_NS(void)
    {
      uint32_t res;
      __asm volatile("MRS      %0,CONTROL_NS" : "=r" (res));
      return res;
    }
    __IAR_FT void   __TZ_set_CONTROL_NS(uint32_t value)
    {
      __asm volatile("MSR      CONTROL_NS,%0" :: "r" (value));
    }
    __IAR_FT uint32_t   __TZ_get_PSP_NS(void)
    {
      uint32_t res;
      __asm volatile("MRS      %0,PSP_NS" : "=r" (res));
      return res;
    }
    __IAR_FT void   __TZ_set_PSP_NS(uint32_t value)
    {
      __asm volatile("MSR      PSP_NS,%0" :: "r" (value));
    }
    __IAR_FT uint32_t   __TZ_get_MSP_NS(void)
    {
      uint32_t res;
      __asm volatile("MRS      %0,MSP_NS" : "=r" (res));
      return res;
    }
    __IAR_FT void   __TZ_set_MSP_NS(uint32_t value)
    {
      __asm volatile("MSR      MSP_NS,%0" :: "r" (value));
    }
    __IAR_FT uint32_t   __TZ_get_SP_NS(void)
    {
      uint32_t res;
      __asm volatile("MRS      %0,SP_NS" : "=r" (res));
      return res;
    }
    __IAR_FT void   __TZ_set_SP_NS(uint32_t value)
    {
      __asm volatile("MSR      SP_NS,%0" :: "r" (value));
    }
    __IAR_FT uint32_t   __TZ_get_PRIMASK_NS(void)
    {
      uint32_t res;
      __asm volatile("MRS      %0,PRIMASK_NS" : "=r" (res));
      return res;
    }
    __IAR_FT void   __TZ_set_PRIMASK_NS(uint32_t value)
    {
      __asm volatile("MSR      PRIMASK_NS,%0" :: "r" (value));
    }
    __IAR_FT uint32_t   __TZ_get_BASEPRI_NS(void)
    {
      uint32_t res;
      __asm volatile("MRS      %0,BASEPRI_NS" : "=r" (res));
      return res;
    }
    __IAR_FT void   __TZ_set_BASEPRI_NS(uint32_t value)
    {
      __asm volatile("MSR      BASEPRI_NS,%0" :: "r" (value));
    }
    __IAR_FT uint32_t   __TZ_get_FAULTMASK_NS(void)
    {
      uint32_t res;
      __asm volatile("MRS      %0,FAULTMASK_NS" : "=r" (res));
      return res;
    }
    __IAR_FT void   __TZ_set_FAULTMASK_NS(uint32_t value)
    {
      __asm volatile("MSR      FAULTMASK_NS,%0" :: "r" (value));
    }
    __IAR_FT uint32_t   __TZ_get_PSPLIM_NS(void)
    {
      uint32_t res;
    #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
         (!defined (__ARM_FEATURE_CMSE  ) || (__ARM_FEATURE_CMSE   < 3)))
      // without main extensions, the non-secure PSPLIM is RAZ/WI
      res = 0U;
    #else
      __asm volatile("MRS      %0,PSPLIM_NS" : "=r" (res));
    #endif
      return res;
    }
    __IAR_FT void   __TZ_set_PSPLIM_NS(uint32_t value)
    {
    #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
         (!defined (__ARM_FEATURE_CMSE  ) || (__ARM_FEATURE_CMSE   < 3)))
      // without main extensions, the non-secure PSPLIM is RAZ/WI
      (void)value;
    #else
      __asm volatile("MSR      PSPLIM_NS,%0" :: "r" (value));
    #endif
    }
    __IAR_FT uint32_t   __TZ_get_MSPLIM_NS(void)
    {
      uint32_t res;
      __asm volatile("MRS      %0,MSPLIM_NS" : "=r" (res));
      return res;
    }
    __IAR_FT void   __TZ_set_MSPLIM_NS(uint32_t value)
    {
      __asm volatile("MSR      MSPLIM_NS,%0" :: "r" (value));
    }
  #endif /* __ARM_ARCH_8M_MAIN__ or __ARM_ARCH_8M_BASE__ */
#endif   /* __ICCARM_INTRINSICS_VERSION__ == 2 */
#define __BKPT(value)    __asm volatile ("BKPT     %0" : : "i"(value))
#if __IAR_M0_FAMILY
  __STATIC_INLINE int32_t __SSAT(int32_t val, uint32_t sat)
  {
    if ((sat >= 1U) && (sat <= 32U))
    {
      const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U);
      const int32_t min = -1 - max ;
      if (val > max)
      {
        return max;
      }
      else if (val < min)
      {
        return min;
      }
    }
    return val;
  }
  __STATIC_INLINE uint32_t __USAT(int32_t val, uint32_t sat)
  {
    if (sat <= 31U)
    {
      const uint32_t max = ((1U << sat) - 1U);
      if (val > (int32_t)max)
      {
        return max;
      }
      else if (val < 0)
      {
        return 0U;
      }
    }
    return (uint32_t)val;
  }
#endif
#if (__CORTEX_M >= 0x03)   /* __CORTEX_M is defined in core_cm0.h, core_cm3.h and core_cm4.h. */
  __IAR_FT uint8_t __LDRBT(volatile uint8_t *addr)
  {
    uint32_t res;
    __ASM volatile ("LDRBT %0, [%1]" : "=r" (res) : "r" (addr) : "memory");
    return ((uint8_t)res);
  }
  __IAR_FT uint16_t __LDRHT(volatile uint16_t *addr)
  {
    uint32_t res;
    __ASM volatile ("LDRHT %0, [%1]" : "=r" (res) : "r" (addr) : "memory");
    return ((uint16_t)res);
  }
  __IAR_FT uint32_t __LDRT(volatile uint32_t *addr)
  {
    uint32_t res;
    __ASM volatile ("LDRT %0, [%1]" : "=r" (res) : "r" (addr) : "memory");
    return res;
  }
  __IAR_FT void __STRBT(uint8_t value, volatile uint8_t *addr)
  {
    __ASM volatile ("STRBT %1, [%0]" : : "r" (addr), "r" ((uint32_t)value) : "memory");
  }
  __IAR_FT void __STRHT(uint16_t value, volatile uint16_t *addr)
  {
    __ASM volatile ("STRHT %1, [%0]" : : "r" (addr), "r" ((uint32_t)value) : "memory");
  }
  __IAR_FT void __STRT(uint32_t value, volatile uint32_t *addr)
  {
    __ASM volatile ("STRT %1, [%0]" : : "r" (addr), "r" (value) : "memory");
  }
#endif /* (__CORTEX_M >= 0x03) */
#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
     (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1))    )
  __IAR_FT uint8_t __LDAB(volatile uint8_t *ptr)
  {
    uint32_t res;
    __ASM volatile ("LDAB %0, [%1]" : "=r" (res) : "r" (ptr) : "memory");
    return ((uint8_t)res);
  }
  __IAR_FT uint16_t __LDAH(volatile uint16_t *ptr)
  {
    uint32_t res;
    __ASM volatile ("LDAH %0, [%1]" : "=r" (res) : "r" (ptr) : "memory");
    return ((uint16_t)res);
  }
  __IAR_FT uint32_t __LDA(volatile uint32_t *ptr)
  {
    uint32_t res;
    __ASM volatile ("LDA %0, [%1]" : "=r" (res) : "r" (ptr) : "memory");
    return res;
  }
  __IAR_FT void __STLB(uint8_t value, volatile uint8_t *ptr)
  {
    __ASM volatile ("STLB %1, [%0]" :: "r" (ptr), "r" (value) : "memory");
  }
  __IAR_FT void __STLH(uint16_t value, volatile uint16_t *ptr)
  {
    __ASM volatile ("STLH %1, [%0]" :: "r" (ptr), "r" (value) : "memory");
  }
  __IAR_FT void __STL(uint32_t value, volatile uint32_t *ptr)
  {
    __ASM volatile ("STL %1, [%0]" :: "r" (ptr), "r" (value) : "memory");
  }
  __IAR_FT uint8_t __LDAEXB(volatile uint8_t *ptr)
  {
    uint32_t res;
    __ASM volatile ("LDAEXB %0, [%1]" : "=r" (res) : "r" (ptr) : "memory");
    return ((uint8_t)res);
  }
  __IAR_FT uint16_t __LDAEXH(volatile uint16_t *ptr)
  {
    uint32_t res;
    __ASM volatile ("LDAEXH %0, [%1]" : "=r" (res) : "r" (ptr) : "memory");
    return ((uint16_t)res);
  }
  __IAR_FT uint32_t __LDAEX(volatile uint32_t *ptr)
  {
    uint32_t res;
    __ASM volatile ("LDAEX %0, [%1]" : "=r" (res) : "r" (ptr) : "memory");
    return res;
  }
  __IAR_FT uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr)
  {
    uint32_t res;
    __ASM volatile ("STLEXB %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory");
    return res;
  }
  __IAR_FT uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr)
  {
    uint32_t res;
    __ASM volatile ("STLEXH %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory");
    return res;
  }
  __IAR_FT uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr)
  {
    uint32_t res;
    __ASM volatile ("STLEX %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory");
    return res;
  }
#endif /* __ARM_ARCH_8M_MAIN__ or __ARM_ARCH_8M_BASE__ */
#undef __IAR_FT
#undef __IAR_M0_FAMILY
#undef __ICCARM_V8
#pragma diag_default=Pe940
#pragma diag_default=Pe177
#define __SXTB16_RORn(ARG1, ARG2) __SXTB16(__ROR(ARG1, ARG2))
#endif /* __CMSIS_ICCARM_H__ */
keil/include/CMSIS/Include/cmsis_version.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
/**************************************************************************//**
 * @file     cmsis_version.h
 * @brief    CMSIS Core(M) Version definitions
 * @version  V5.0.4
 * @date     23. July 2019
 ******************************************************************************/
/*
 * Copyright (c) 2009-2019 ARM Limited. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the License); you may
 * not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#if   defined ( __ICCARM__ )
  #pragma system_include         /* treat file as system include file for MISRA check */
#elif defined (__clang__)
  #pragma clang system_header   /* treat file as system include file */
#endif
#ifndef __CMSIS_VERSION_H
#define __CMSIS_VERSION_H
/*  CMSIS Version definitions */
#define __CM_CMSIS_VERSION_MAIN  ( 5U)                                      /*!< [31:16] CMSIS Core(M) main version */
#define __CM_CMSIS_VERSION_SUB   ( 4U)                                      /*!< [15:0]  CMSIS Core(M) sub version */
#define __CM_CMSIS_VERSION       ((__CM_CMSIS_VERSION_MAIN << 16U) | \
                                   __CM_CMSIS_VERSION_SUB           )       /*!< CMSIS Core(M) version number */
#endif
keil/include/CMSIS/Include/core_cm0.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,952 @@
/**************************************************************************//**
 * @file     core_cm0.h
 * @brief    CMSIS Cortex-M0 Core Peripheral Access Layer Header File
 * @version  V5.0.8
 * @date     21. August 2019
 ******************************************************************************/
/*
 * Copyright (c) 2009-2019 Arm Limited. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the License); you may
 * not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#if   defined ( __ICCARM__ )
  #pragma system_include         /* treat file as system include file for MISRA check */
#elif defined (__clang__)
  #pragma clang system_header   /* treat file as system include file */
#endif
#ifndef __CORE_CM0_H_GENERIC
#define __CORE_CM0_H_GENERIC
#include <stdint.h>
#ifdef __cplusplus
 extern "C" {
#endif
/**
  \page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions
  CMSIS violates the following MISRA-C:2004 rules:
   \li Required Rule 8.5, object/function definition in header file.<br>
     Function definitions in header files are used to allow 'inlining'.
   \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>
     Unions are used for effective representation of core registers.
   \li Advisory Rule 19.7, Function-like macro defined.<br>
     Function-like macros are used to allow more efficient code.
 */
/*******************************************************************************
 *                 CMSIS definitions
 ******************************************************************************/
/**
  \ingroup Cortex_M0
  @{
 */
#include "cmsis_version.h"
/*  CMSIS CM0 definitions */
#define __CM0_CMSIS_VERSION_MAIN  (__CM_CMSIS_VERSION_MAIN)              /*!< \deprecated [31:16] CMSIS HAL main version */
#define __CM0_CMSIS_VERSION_SUB   (__CM_CMSIS_VERSION_SUB)               /*!< \deprecated [15:0]  CMSIS HAL sub version */
#define __CM0_CMSIS_VERSION       ((__CM0_CMSIS_VERSION_MAIN << 16U) | \
                                    __CM0_CMSIS_VERSION_SUB           )  /*!< \deprecated CMSIS HAL version number */
#define __CORTEX_M                (0U)                                   /*!< Cortex-M Core */
/** __FPU_USED indicates whether an FPU is used or not.
    This core does not support an FPU at all
*/
#define __FPU_USED       0U
#if defined ( __CC_ARM )
  #if defined __TARGET_FPU_VFP
    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
  #endif
#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
  #if defined __ARM_FP
    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
  #endif
#elif defined ( __GNUC__ )
  #if defined (__VFP_FP__) && !defined(__SOFTFP__)
    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
  #endif
#elif defined ( __ICCARM__ )
  #if defined __ARMVFP__
    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
  #endif
#elif defined ( __TI_ARM__ )
  #if defined __TI_VFP_SUPPORT__
    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
  #endif
#elif defined ( __TASKING__ )
  #if defined __FPU_VFP__
    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
  #endif
#elif defined ( __CSMC__ )
  #if ( __CSMC__ & 0x400U)
    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
  #endif
#endif
#include "cmsis_compiler.h"               /* CMSIS compiler specific defines */
#ifdef __cplusplus
}
#endif
#endif /* __CORE_CM0_H_GENERIC */
#ifndef __CMSIS_GENERIC
#ifndef __CORE_CM0_H_DEPENDANT
#define __CORE_CM0_H_DEPENDANT
#ifdef __cplusplus
 extern "C" {
#endif
/* check device defines and use defaults */
#if defined __CHECK_DEVICE_DEFINES
  #ifndef __CM0_REV
    #define __CM0_REV               0x0000U
    #warning "__CM0_REV not defined in device header file; using default!"
  #endif
  #ifndef __NVIC_PRIO_BITS
    #define __NVIC_PRIO_BITS          2U
    #warning "__NVIC_PRIO_BITS not defined in device header file; using default!"
  #endif
  #ifndef __Vendor_SysTickConfig
    #define __Vendor_SysTickConfig    0U
    #warning "__Vendor_SysTickConfig not defined in device header file; using default!"
  #endif
#endif
/* IO definitions (access restrictions to peripheral registers) */
/**
    \defgroup CMSIS_glob_defs CMSIS Global Defines
    <strong>IO Type Qualifiers</strong> are used
    \li to specify the access to peripheral variables.
    \li for automatic generation of peripheral register debug information.
*/
#ifdef __cplusplus
  #define   __I     volatile             /*!< Defines 'read only' permissions */
#else
  #define   __I     volatile const       /*!< Defines 'read only' permissions */
#endif
#define     __O     volatile             /*!< Defines 'write only' permissions */
#define     __IO    volatile             /*!< Defines 'read / write' permissions */
/* following defines should be used for structure members */
#define     __IM     volatile const      /*! Defines 'read only' structure member permissions */
#define     __OM     volatile            /*! Defines 'write only' structure member permissions */
#define     __IOM    volatile            /*! Defines 'read / write' structure member permissions */
/*@} end of group Cortex_M0 */
/*******************************************************************************
 *                 Register Abstraction
  Core Register contain:
  - Core Register
  - Core NVIC Register
  - Core SCB Register
  - Core SysTick Register
 ******************************************************************************/
/**
  \defgroup CMSIS_core_register Defines and Type Definitions
  \brief Type definitions and defines for Cortex-M processor based devices.
*/
/**
  \ingroup    CMSIS_core_register
  \defgroup   CMSIS_CORE  Status and Control Registers
  \brief      Core Register type definitions.
  @{
 */
/**
  \brief  Union type to access the Application Program Status Register (APSR).
 */
typedef union
{
  struct
  {
    uint32_t _reserved0:28;              /*!< bit:  0..27  Reserved */
    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */
    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */
    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */
    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */
  } b;                                   /*!< Structure used for bit  access */
  uint32_t w;                            /*!< Type      used for word access */
} APSR_Type;
/* APSR Register Definitions */
#define APSR_N_Pos                         31U                                            /*!< APSR: N Position */
#define APSR_N_Msk                         (1UL << APSR_N_Pos)                            /*!< APSR: N Mask */
#define APSR_Z_Pos                         30U                                            /*!< APSR: Z Position */
#define APSR_Z_Msk                         (1UL << APSR_Z_Pos)                            /*!< APSR: Z Mask */
#define APSR_C_Pos                         29U                                            /*!< APSR: C Position */
#define APSR_C_Msk                         (1UL << APSR_C_Pos)                            /*!< APSR: C Mask */
#define APSR_V_Pos                         28U                                            /*!< APSR: V Position */
#define APSR_V_Msk                         (1UL << APSR_V_Pos)                            /*!< APSR: V Mask */
/**
  \brief  Union type to access the Interrupt Program Status Register (IPSR).
 */
typedef union
{
  struct
  {
    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */
    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved */
  } b;                                   /*!< Structure used for bit  access */
  uint32_t w;                            /*!< Type      used for word access */
} IPSR_Type;
/* IPSR Register Definitions */
#define IPSR_ISR_Pos                        0U                                            /*!< IPSR: ISR Position */
#define IPSR_ISR_Msk                       (0x1FFUL /*<< IPSR_ISR_Pos*/)                  /*!< IPSR: ISR Mask */
/**
  \brief  Union type to access the Special-Purpose Program Status Registers (xPSR).
 */
typedef union
{
  struct
  {
    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number */
    uint32_t _reserved0:15;              /*!< bit:  9..23  Reserved */
    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0) */
    uint32_t _reserved1:3;               /*!< bit: 25..27  Reserved */
    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag */
    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag */
    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag */
    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag */
  } b;                                   /*!< Structure used for bit  access */
  uint32_t w;                            /*!< Type      used for word access */
} xPSR_Type;
/* xPSR Register Definitions */
#define xPSR_N_Pos                         31U                                            /*!< xPSR: N Position */
#define xPSR_N_Msk                         (1UL << xPSR_N_Pos)                            /*!< xPSR: N Mask */
#define xPSR_Z_Pos                         30U                                            /*!< xPSR: Z Position */
#define xPSR_Z_Msk                         (1UL << xPSR_Z_Pos)                            /*!< xPSR: Z Mask */
#define xPSR_C_Pos                         29U                                            /*!< xPSR: C Position */
#define xPSR_C_Msk                         (1UL << xPSR_C_Pos)                            /*!< xPSR: C Mask */
#define xPSR_V_Pos                         28U                                            /*!< xPSR: V Position */
#define xPSR_V_Msk                         (1UL << xPSR_V_Pos)                            /*!< xPSR: V Mask */
#define xPSR_T_Pos                         24U                                            /*!< xPSR: T Position */
#define xPSR_T_Msk                         (1UL << xPSR_T_Pos)                            /*!< xPSR: T Mask */
#define xPSR_ISR_Pos                        0U                                            /*!< xPSR: ISR Position */
#define xPSR_ISR_Msk                       (0x1FFUL /*<< xPSR_ISR_Pos*/)                  /*!< xPSR: ISR Mask */
/**
  \brief  Union type to access the Control Registers (CONTROL).
 */
typedef union
{
  struct
  {
    uint32_t _reserved0:1;               /*!< bit:      0  Reserved */
    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used */
    uint32_t _reserved1:30;              /*!< bit:  2..31  Reserved */
  } b;                                   /*!< Structure used for bit  access */
  uint32_t w;                            /*!< Type      used for word access */
} CONTROL_Type;
/* CONTROL Register Definitions */
#define CONTROL_SPSEL_Pos                   1U                                            /*!< CONTROL: SPSEL Position */
#define CONTROL_SPSEL_Msk                  (1UL << CONTROL_SPSEL_Pos)                     /*!< CONTROL: SPSEL Mask */
/*@} end of group CMSIS_CORE */
/**
  \ingroup    CMSIS_core_register
  \defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)
  \brief      Type definitions for the NVIC Registers
  @{
 */
/**
  \brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).
 */
typedef struct
{
  __IOM uint32_t ISER[1U];               /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register */
        uint32_t RESERVED0[31U];
  __IOM uint32_t ICER[1U];               /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register */
        uint32_t RESERVED1[31U];
  __IOM uint32_t ISPR[1U];               /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register */
        uint32_t RESERVED2[31U];
  __IOM uint32_t ICPR[1U];               /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register */
        uint32_t RESERVED3[31U];
        uint32_t RESERVED4[64U];
  __IOM uint32_t IP[8U];                 /*!< Offset: 0x300 (R/W)  Interrupt Priority Register */
}  NVIC_Type;
/*@} end of group CMSIS_NVIC */
/**
  \ingroup  CMSIS_core_register
  \defgroup CMSIS_SCB     System Control Block (SCB)
  \brief    Type definitions for the System Control Block Registers
  @{
 */
/**
  \brief  Structure type to access the System Control Block (SCB).
 */
typedef struct
{
  __IM  uint32_t CPUID;                  /*!< Offset: 0x000 (R/ )  CPUID Base Register */
  __IOM uint32_t ICSR;                   /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register */
        uint32_t RESERVED0;
  __IOM uint32_t AIRCR;                  /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register */
  __IOM uint32_t SCR;                    /*!< Offset: 0x010 (R/W)  System Control Register */
  __IOM uint32_t CCR;                    /*!< Offset: 0x014 (R/W)  Configuration Control Register */
        uint32_t RESERVED1;
  __IOM uint32_t SHP[2U];                /*!< Offset: 0x01C (R/W)  System Handlers Priority Registers. [0] is RESERVED */
  __IOM uint32_t SHCSR;                  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register */
} SCB_Type;
/* SCB CPUID Register Definitions */
#define SCB_CPUID_IMPLEMENTER_Pos          24U                                            /*!< SCB CPUID: IMPLEMENTER Position */
#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */
#define SCB_CPUID_VARIANT_Pos              20U                                            /*!< SCB CPUID: VARIANT Position */
#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */
#define SCB_CPUID_ARCHITECTURE_Pos         16U                                            /*!< SCB CPUID: ARCHITECTURE Position */
#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */
#define SCB_CPUID_PARTNO_Pos                4U                                            /*!< SCB CPUID: PARTNO Position */
#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */
#define SCB_CPUID_REVISION_Pos              0U                                            /*!< SCB CPUID: REVISION Position */
#define SCB_CPUID_REVISION_Msk             (0xFUL /*<< SCB_CPUID_REVISION_Pos*/)          /*!< SCB CPUID: REVISION Mask */
/* SCB Interrupt Control State Register Definitions */
#define SCB_ICSR_NMIPENDSET_Pos            31U                                            /*!< SCB ICSR: NMIPENDSET Position */
#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */
#define SCB_ICSR_PENDSVSET_Pos             28U                                            /*!< SCB ICSR: PENDSVSET Position */
#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */
#define SCB_ICSR_PENDSVCLR_Pos             27U                                            /*!< SCB ICSR: PENDSVCLR Position */
#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */
#define SCB_ICSR_PENDSTSET_Pos             26U                                            /*!< SCB ICSR: PENDSTSET Position */
#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */
#define SCB_ICSR_PENDSTCLR_Pos             25U                                            /*!< SCB ICSR: PENDSTCLR Position */
#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */
#define SCB_ICSR_ISRPREEMPT_Pos            23U                                            /*!< SCB ICSR: ISRPREEMPT Position */
#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */
#define SCB_ICSR_ISRPENDING_Pos            22U                                            /*!< SCB ICSR: ISRPENDING Position */
#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */
#define SCB_ICSR_VECTPENDING_Pos           12U                                            /*!< SCB ICSR: VECTPENDING Position */
#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */
#define SCB_ICSR_VECTACTIVE_Pos             0U                                            /*!< SCB ICSR: VECTACTIVE Position */
#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/)       /*!< SCB ICSR: VECTACTIVE Mask */
/* SCB Application Interrupt and Reset Control Register Definitions */
#define SCB_AIRCR_VECTKEY_Pos              16U                                            /*!< SCB AIRCR: VECTKEY Position */
#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */
#define SCB_AIRCR_VECTKEYSTAT_Pos          16U                                            /*!< SCB AIRCR: VECTKEYSTAT Position */
#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */
#define SCB_AIRCR_ENDIANESS_Pos            15U                                            /*!< SCB AIRCR: ENDIANESS Position */
#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */
#define SCB_AIRCR_SYSRESETREQ_Pos           2U                                            /*!< SCB AIRCR: SYSRESETREQ Position */
#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */
#define SCB_AIRCR_VECTCLRACTIVE_Pos         1U                                            /*!< SCB AIRCR: VECTCLRACTIVE Position */
#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */
/* SCB System Control Register Definitions */
#define SCB_SCR_SEVONPEND_Pos               4U                                            /*!< SCB SCR: SEVONPEND Position */
#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */
#define SCB_SCR_SLEEPDEEP_Pos               2U                                            /*!< SCB SCR: SLEEPDEEP Position */
#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */
#define SCB_SCR_SLEEPONEXIT_Pos             1U                                            /*!< SCB SCR: SLEEPONEXIT Position */
#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */
/* SCB Configuration Control Register Definitions */
#define SCB_CCR_STKALIGN_Pos                9U                                            /*!< SCB CCR: STKALIGN Position */
#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */
#define SCB_CCR_UNALIGN_TRP_Pos             3U                                            /*!< SCB CCR: UNALIGN_TRP Position */
#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */
/* SCB System Handler Control and State Register Definitions */
#define SCB_SHCSR_SVCALLPENDED_Pos         15U                                            /*!< SCB SHCSR: SVCALLPENDED Position */
#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */
/*@} end of group CMSIS_SCB */
/**
  \ingroup  CMSIS_core_register
  \defgroup CMSIS_SysTick     System Tick Timer (SysTick)
  \brief    Type definitions for the System Timer Registers.
  @{
 */
/**
  \brief  Structure type to access the System Timer (SysTick).
 */
typedef struct
{
  __IOM uint32_t CTRL;                   /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */
  __IOM uint32_t LOAD;                   /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register */
  __IOM uint32_t VAL;                    /*!< Offset: 0x008 (R/W)  SysTick Current Value Register */
  __IM  uint32_t CALIB;                  /*!< Offset: 0x00C (R/ )  SysTick Calibration Register */
} SysTick_Type;
/* SysTick Control / Status Register Definitions */
#define SysTick_CTRL_COUNTFLAG_Pos         16U                                            /*!< SysTick CTRL: COUNTFLAG Position */
#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */
#define SysTick_CTRL_CLKSOURCE_Pos          2U                                            /*!< SysTick CTRL: CLKSOURCE Position */
#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */
#define SysTick_CTRL_TICKINT_Pos            1U                                            /*!< SysTick CTRL: TICKINT Position */
#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */
#define SysTick_CTRL_ENABLE_Pos             0U                                            /*!< SysTick CTRL: ENABLE Position */
#define SysTick_CTRL_ENABLE_Msk            (1UL /*<< SysTick_CTRL_ENABLE_Pos*/)           /*!< SysTick CTRL: ENABLE Mask */
/* SysTick Reload Register Definitions */
#define SysTick_LOAD_RELOAD_Pos             0U                                            /*!< SysTick LOAD: RELOAD Position */
#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/)    /*!< SysTick LOAD: RELOAD Mask */
/* SysTick Current Register Definitions */
#define SysTick_VAL_CURRENT_Pos             0U                                            /*!< SysTick VAL: CURRENT Position */
#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/)    /*!< SysTick VAL: CURRENT Mask */
/* SysTick Calibration Register Definitions */
#define SysTick_CALIB_NOREF_Pos            31U                                            /*!< SysTick CALIB: NOREF Position */
#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */
#define SysTick_CALIB_SKEW_Pos             30U                                            /*!< SysTick CALIB: SKEW Position */
#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */
#define SysTick_CALIB_TENMS_Pos             0U                                            /*!< SysTick CALIB: TENMS Position */
#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/)    /*!< SysTick CALIB: TENMS Mask */
/*@} end of group CMSIS_SysTick */
/**
  \ingroup  CMSIS_core_register
  \defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)
  \brief    Cortex-M0 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor.
            Therefore they are not covered by the Cortex-M0 header file.
  @{
 */
/*@} end of group CMSIS_CoreDebug */
/**
  \ingroup    CMSIS_core_register
  \defgroup   CMSIS_core_bitfield     Core register bit field macros
  \brief      Macros for use with bit field definitions (xxx_Pos, xxx_Msk).
  @{
 */
/**
  \brief   Mask and shift a bit field value for use in a register bit range.
  \param[in] field  Name of the register bit field.
  \param[in] value  Value of the bit field. This parameter is interpreted as an uint32_t type.
  \return           Masked and shifted value.
*/
#define _VAL2FLD(field, value)    (((uint32_t)(value) << field ## _Pos) & field ## _Msk)
/**
  \brief     Mask and shift a register value to extract a bit filed value.
  \param[in] field  Name of the register bit field.
  \param[in] value  Value of register. This parameter is interpreted as an uint32_t type.
  \return           Masked and shifted bit field value.
*/
#define _FLD2VAL(field, value)    (((uint32_t)(value) & field ## _Msk) >> field ## _Pos)
/*@} end of group CMSIS_core_bitfield */
/**
  \ingroup    CMSIS_core_register
  \defgroup   CMSIS_core_base     Core Definitions
  \brief      Definitions for base addresses, unions, and structures.
  @{
 */
/* Memory mapping of Core Hardware */
#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address */
#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address */
#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address */
#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address */
#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct */
#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct */
#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct */
/*@} */
/*******************************************************************************
 *                Hardware Abstraction Layer
  Core Function Interface contains:
  - Core NVIC Functions
  - Core SysTick Functions
  - Core Register Access Functions
 ******************************************************************************/
/**
  \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference
*/
/* ##########################   NVIC functions  #################################### */
/**
  \ingroup  CMSIS_Core_FunctionInterface
  \defgroup CMSIS_Core_NVICFunctions NVIC Functions
  \brief    Functions that manage interrupts and exceptions via the NVIC.
  @{
 */
#ifdef CMSIS_NVIC_VIRTUAL
  #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE
    #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h"
  #endif
  #include CMSIS_NVIC_VIRTUAL_HEADER_FILE
#else
  #define NVIC_SetPriorityGrouping    __NVIC_SetPriorityGrouping
  #define NVIC_GetPriorityGrouping    __NVIC_GetPriorityGrouping
  #define NVIC_EnableIRQ              __NVIC_EnableIRQ
  #define NVIC_GetEnableIRQ           __NVIC_GetEnableIRQ
  #define NVIC_DisableIRQ             __NVIC_DisableIRQ
  #define NVIC_GetPendingIRQ          __NVIC_GetPendingIRQ
  #define NVIC_SetPendingIRQ          __NVIC_SetPendingIRQ
  #define NVIC_ClearPendingIRQ        __NVIC_ClearPendingIRQ
/*#define NVIC_GetActive              __NVIC_GetActive             not available for Cortex-M0 */
  #define NVIC_SetPriority            __NVIC_SetPriority
  #define NVIC_GetPriority            __NVIC_GetPriority
  #define NVIC_SystemReset            __NVIC_SystemReset
#endif /* CMSIS_NVIC_VIRTUAL */
#ifdef CMSIS_VECTAB_VIRTUAL
  #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE
    #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h"
  #endif
  #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE
#else
  #define NVIC_SetVector              __NVIC_SetVector
  #define NVIC_GetVector              __NVIC_GetVector
#endif  /* (CMSIS_VECTAB_VIRTUAL) */
#define NVIC_USER_IRQ_OFFSET          16
/* The following EXC_RETURN values are saved the LR on exception entry */
#define EXC_RETURN_HANDLER         (0xFFFFFFF1UL)     /* return to Handler mode, uses MSP after return                               */
#define EXC_RETURN_THREAD_MSP      (0xFFFFFFF9UL)     /* return to Thread mode, uses MSP after return                                */
#define EXC_RETURN_THREAD_PSP      (0xFFFFFFFDUL)     /* return to Thread mode, uses PSP after return                                */
/* Interrupt Priorities are WORD accessible only under Armv6-M                  */
/* The following MACROS handle generation of the register offset and byte masks */
#define _BIT_SHIFT(IRQn)         (  ((((uint32_t)(int32_t)(IRQn))         )      &  0x03UL) * 8UL)
#define _SHP_IDX(IRQn)           ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >>    2UL)      )
#define _IP_IDX(IRQn)            (   (((uint32_t)(int32_t)(IRQn))                >>    2UL)      )
#define __NVIC_SetPriorityGrouping(X) (void)(X)
#define __NVIC_GetPriorityGrouping()  (0U)
/**
  \brief   Enable Interrupt
  \details Enables a device specific interrupt in the NVIC interrupt controller.
  \param [in]      IRQn  Device specific interrupt number.
  \note    IRQn must not be negative.
 */
__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)
{
  if ((int32_t)(IRQn) >= 0)
  {
    __COMPILER_BARRIER();
    NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
    __COMPILER_BARRIER();
  }
}
/**
  \brief   Get Interrupt Enable status
  \details Returns a device specific interrupt enable status from the NVIC interrupt controller.
  \param [in]      IRQn  Device specific interrupt number.
  \return             0  Interrupt is not enabled.
  \return             1  Interrupt is enabled.
  \note    IRQn must not be negative.
 */
__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)
{
  if ((int32_t)(IRQn) >= 0)
  {
    return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
  }
  else
  {
    return(0U);
  }
}
/**
  \brief   Disable Interrupt
  \details Disables a device specific interrupt in the NVIC interrupt controller.
  \param [in]      IRQn  Device specific interrupt number.
  \note    IRQn must not be negative.
 */
__STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn)
{
  if ((int32_t)(IRQn) >= 0)
  {
    NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
    __DSB();
    __ISB();
  }
}
/**
  \brief   Get Pending Interrupt
  \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt.
  \param [in]      IRQn  Device specific interrupt number.
  \return             0  Interrupt status is not pending.
  \return             1  Interrupt status is pending.
  \note    IRQn must not be negative.
 */
__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)
{
  if ((int32_t)(IRQn) >= 0)
  {
    return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
  }
  else
  {
    return(0U);
  }
}
/**
  \brief   Set Pending Interrupt
  \details Sets the pending bit of a device specific interrupt in the NVIC pending register.
  \param [in]      IRQn  Device specific interrupt number.
  \note    IRQn must not be negative.
 */
__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn)
{
  if ((int32_t)(IRQn) >= 0)
  {
    NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
  }
}
/**
  \brief   Clear Pending Interrupt
  \details Clears the pending bit of a device specific interrupt in the NVIC pending register.
  \param [in]      IRQn  Device specific interrupt number.
  \note    IRQn must not be negative.
 */
__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)
{
  if ((int32_t)(IRQn) >= 0)
  {
    NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
  }
}
/**
  \brief   Set Interrupt Priority
  \details Sets the priority of a device specific interrupt or a processor exception.
           The interrupt number can be positive to specify a device specific interrupt,
           or negative to specify a processor exception.
  \param [in]      IRQn  Interrupt number.
  \param [in]  priority  Priority to set.
  \note    The priority cannot be set for every processor exception.
 */
__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
{
  if ((int32_t)(IRQn) >= 0)
  {
    NVIC->IP[_IP_IDX(IRQn)]  = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)]  & ~(0xFFUL << _BIT_SHIFT(IRQn))) |
       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));
  }
  else
  {
    SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |
       (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));
  }
}
/**
  \brief   Get Interrupt Priority
  \details Reads the priority of a device specific interrupt or a processor exception.
           The interrupt number can be positive to specify a device specific interrupt,
           or negative to specify a processor exception.
  \param [in]   IRQn  Interrupt number.
  \return             Interrupt Priority.
                      Value is aligned automatically to the implemented priority bits of the microcontroller.
 */
__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn)
{
  if ((int32_t)(IRQn) >= 0)
  {
    return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));
  }
  else
  {
    return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS)));
  }
}
/**
  \brief   Encode Priority
  \details Encodes the priority for an interrupt with the given priority group,
           preemptive priority value, and subpriority value.
           In case of a conflict between priority grouping and available
           priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.
  \param [in]     PriorityGroup  Used priority group.
  \param [in]   PreemptPriority  Preemptive priority value (starting from 0).
  \param [in]       SubPriority  Subpriority value (starting from 0).
  \return                        Encoded priority. Value can be used in the function \ref NVIC_SetPriority().
 */
__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)
{
  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */
  uint32_t PreemptPriorityBits;
  uint32_t SubPriorityBits;
  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
  return (
           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))
         );
}
/**
  \brief   Decode Priority
  \details Decodes an interrupt priority value with a given priority group to
           preemptive priority value and subpriority value.
           In case of a conflict between priority grouping and available
           priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set.
  \param [in]         Priority   Priority value, which can be retrieved with the function \ref NVIC_GetPriority().
  \param [in]     PriorityGroup  Used priority group.
  \param [out] pPreemptPriority  Preemptive priority value (starting from 0).
  \param [out]     pSubPriority  Subpriority value (starting from 0).
 */
__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)
{
  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);   /* only values 0..7 are used          */
  uint32_t PreemptPriorityBits;
  uint32_t SubPriorityBits;
  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);
  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);
}
/**
  \brief   Set Interrupt Vector
  \details Sets an interrupt vector in SRAM based interrupt vector table.
           The interrupt number can be positive to specify a device specific interrupt,
           or negative to specify a processor exception.
           Address 0 must be mapped to SRAM.
  \param [in]   IRQn      Interrupt number
  \param [in]   vector    Address of interrupt handler function
 */
__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)
{
  uint32_t *vectors = (uint32_t *)(NVIC_USER_IRQ_OFFSET << 2);      /* point to 1st user interrupt */
  *(vectors + (int32_t)IRQn) = vector;                              /* use pointer arithmetic to access vector */
  /* ARM Application Note 321 states that the M0 does not require the architectural barrier */
}
/**
  \brief   Get Interrupt Vector
  \details Reads an interrupt vector from interrupt vector table.
           The interrupt number can be positive to specify a device specific interrupt,
           or negative to specify a processor exception.
  \param [in]   IRQn      Interrupt number.
  \return                 Address of interrupt handler function
 */
__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn)
{
  uint32_t *vectors = (uint32_t *)(NVIC_USER_IRQ_OFFSET << 2);      /* point to 1st user interrupt */
  return *(vectors + (int32_t)IRQn);                                /* use pointer arithmetic to access vector */
}
/**
  \brief   System Reset
  \details Initiates a system reset request to reset the MCU.
 */
__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)
{
  __DSB();                                                          /* Ensure all outstanding memory accesses included
                                                                       buffered write are completed before reset */
  SCB->AIRCR  = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
                 SCB_AIRCR_SYSRESETREQ_Msk);
  __DSB();                                                          /* Ensure completion of memory access */
  for(;;)                                                           /* wait until reset */
  {
    __NOP();
  }
}
/*@} end of CMSIS_Core_NVICFunctions */
/* ##########################  FPU functions  #################################### */
/**
  \ingroup  CMSIS_Core_FunctionInterface
  \defgroup CMSIS_Core_FpuFunctions FPU Functions
  \brief    Function that provides FPU type.
  @{
 */
/**
  \brief   get FPU type
  \details returns the FPU type
  \returns
   - \b  0: No FPU
   - \b  1: Single precision FPU
   - \b  2: Double + Single precision FPU
 */
__STATIC_INLINE uint32_t SCB_GetFPUType(void)
{
    return 0U;           /* No FPU */
}
/*@} end of CMSIS_Core_FpuFunctions */
/* ##################################    SysTick function  ############################################ */
/**
  \ingroup  CMSIS_Core_FunctionInterface
  \defgroup CMSIS_Core_SysTickFunctions SysTick Functions
  \brief    Functions that configure the System.
  @{
 */
#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U)
/**
  \brief   System Tick Configuration
  \details Initializes the System Timer and its interrupt, and starts the System Tick Timer.
           Counter is in free running mode to generate periodic interrupts.
  \param [in]  ticks  Number of ticks between two interrupts.
  \return          0  Function succeeded.
  \return          1  Function failed.
  \note    When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the
           function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>
           must contain a vendor-specific implementation of this function.
 */
__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
{
  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
  {
    return (1UL);                                                   /* Reload value impossible */
  }
  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */
  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */
  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
                   SysTick_CTRL_TICKINT_Msk   |
                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */
  return (0UL);                                                     /* Function successful */
}
#endif
/*@} end of CMSIS_Core_SysTickFunctions */
#ifdef __cplusplus
}
#endif
#endif /* __CORE_CM0_H_DEPENDANT */
#endif /* __CMSIS_GENERIC */
keil/include/board/board.c
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,463 @@
/*
 * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and
 * its subsidiaries and affiliates (collectly called MKSEMI).
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form, except as embedded into an MKSEMI
 *    integrated circuit in a product or a software update for such product,
 *    must reproduce the above copyright notice, this list of conditions and
 *    the following disclaimer in the documentation and/or other materials
 *    provided with the distribution.
 *
 * 3. Neither the name of MKSEMI nor the names of its contributors may be used
 *    to endorse or promote products derived from this software without
 *    specific prior written permission.
 *
 * 4. This software, with or without modification, must only be used with a
 *    MKSEMI integrated circuit.
 *
 * 5. Any software provided in binary form under this license must not be
 *    reverse engineered, decompiled, modified and/or disassembled.
 *
 * THIS SOFTWARE IS PROVIDED BY MKSEMI "AS IS" AND ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL MKSEMI OR CONTRIBUTORS BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
#include "board.h"
#include "mk_power.h"
#include "mk_clock.h"
#include "mk_calib.h"
#include "mk_misc.h"
#include "mk_uwb.h"
#ifdef WSF_EN
#include "wsf_nvm.h"
#endif
#if defined(UCI_INTF_PORT)
#include "uci_tl_task.h"
#endif
#if TRACE_EN
static enum TRACE_PORT_T user_trace_port;
#endif
#ifndef TRACE_BAUD_RATE
#define TRACE_BAUD_RATE (BAUD_921600)
#endif
struct BOARD_PARAM_T board_param = {0};
static GPIO_IRQ_HANDLER_T button_irq_handler = NULL;
void board_clock_run(void)
{
    // default load cap
    REG_WRITE(0x40000048, 76);
    clock_attach(CLOCK_48M_RO_TO_SYS_CLK);
    delay_us(50);
    // calibrate REFPLL
    calib_open();
    calib_start(CALIB_PO_REFPLL_EN);
    calib_check(CALIB_REFPLL_DONE);
    calib_close();
    /* SYSCLK comes from XTAL */
    clock_attach(SYS_CLK_SOURCE);
    /* Configure AHB clock, AHBCLK = SYSCLK/(div) */
    clock_set_divider(CLOCK_AHB_DIV, AHB_DIV);
    /* Configure APB clock, APBCLK = AHBCLK/(div) */
    clock_set_divider(CLOCK_APB_DIV, APB_DIV);
    /* Select 32k clock source: 32768Hz XTAL or 32000Hz RCO */
    clock_attach(CLK_32K_SOURCE);
    /* Select WDT clcok source: 32K or APBCLK */
    clock_attach(CLOCK_32K_TO_WDT_CLK);
#if SYS_TICK_EN
    /* Configure sys tick timer, 32768 / 100 = 10ms @ 32k */
    sys_tick_start(328);
#endif
    /* System timer */
    sys_timer_open();
}
void board_debug_console_open(enum TRACE_PORT_T port)
{
#if TRACE_EN
    trace_open(port, TRACE_BAUD_RATE);
    user_trace_port = port;
#endif
    LOG_INFO(TRACE_MODULE_APP, "Hello from MKSEMI!\r\n");
    LOG_INFO(TRACE_MODULE_APP, "Build information %s\r\n", mk_build_inf);
}
void board_calibration_params_default(void)
{
    board_param.load_cap = 76;
#ifdef UWB_EN
    board_param.tx_power_fcc[CALIB_CH9] = TX_POWER_LEVEL;
    board_param.tx_power_fcc[CALIB_CH5] = TX_POWER_LEVEL;
    board_param.tx_power_fcc[CALIB_CH2] = TX_POWER_LEVEL;
    board_param.ranging_session_id = 0;
    board_param.local_short_addr = 0;
    board_param.peer_short_addr = 0;
#if (ANT_PATTERN == ANT_PATTERN_SQUARE)
    int16_t ant_delays_ch9[4] = {0, 0, 0, 36};
    int16_t ant_delays_ch5[4] = {0, 0, 0, 36};
    int16_t ant_delays_ch2[4] = {0, 0, 36, 0};
    // 4-ANTs: 0, 1, 2, 3
    int16_t pdoa_delays_ch9[4] = {52, -21, -8, 0};
    int16_t pdoa_delays_ch5[4] = {52, -21, -8, 0};
    // int16_t pdoa_delays_ch5[4] = {70, -2, -0, 0};
    int16_t pdoa_delays_ch2[4] = {52, -21, -8, 0};
    int16_t pdoa_gains_ch9[4] = {94, 99, 89, 88};
    int16_t pdoa_gains_ch5[4] = {94, 99, 89, 88};
    // int16_t pdoa_gains_ch5[4] = {94, 93, 89, 98};
    int16_t pdoa_gains_ch2[4] = {94, 99, 89, 88};
    int16_t pdoa_offsets[2] = {0, 0};
    board_param.pdoa_ant_space = 180;
#elif (ANT_PATTERN == ANT_PATTERN_TRIANGLE_REGULAR)
    int16_t ant_delays_ch9[4] = {0, 0, 0, 36};
    int16_t ant_delays_ch5[4] = {0, 0, 0, 36};
    int16_t ant_delays_ch2[4] = {0, 0, 36, 0};
    // 3-ANTs: 3, 0, 1
    int16_t pdoa_delays_ch9[4] = {0, -21, 52};
    int16_t pdoa_delays_ch5[4] = {0, -21, 52};
    int16_t pdoa_delays_ch2[4] = {0, -21, 52};
    int16_t pdoa_gains_ch9[4] = {88, 94, 99};
    int16_t pdoa_gains_ch5[4] = {88, 94, 99};
    int16_t pdoa_gains_ch2[4] = {88, 94, 99};
    int16_t pdoa_offsets[2] = {0, 0};
    board_param.pdoa_ant_space = 180;
#else
    // linear antenna array
    int16_t ant_delays_ch9[4] = {0, 0, 0, 122};
    int16_t ant_delays_ch5[4] = {0, 0, 0, 122};
    int16_t ant_delays_ch2[4] = {0, 0, 122, 0};
#if RX_ANT_PORTS_NUM == 4
    // 4-ANTs: 0, 1, 2, 3
    int16_t pdoa_delays_ch9[4] = {36, 47, 57, 0};
    int16_t pdoa_delays_ch5[4] = {51, -73, -57, 0};
    int16_t pdoa_delays_ch2[4] = {36, 47, 57, 0};
    int16_t pdoa_gains_ch9[4] = {108, 99, 98, 100};
    int16_t pdoa_gains_ch5[4] = {94, 103, 87, 100};
    int16_t pdoa_gains_ch2[4] = {108, 99, 98, 100};
    int16_t pdoa_offsets[2] = {0, 0};
    board_param.pdoa_ant_space = 180;
#elif RX_ANT_PORTS_NUM == 3
#if 0
    // 3-ANTs: 3, 0, 1
    int16_t pdoa_delays_ch9[4] = {0, 36, 47};
    int16_t pdoa_delays_ch5[4] = {0, 51, -73};
    int16_t pdoa_delays_ch2[4] = {0, 36, 47};
    int16_t pdoa_gains_ch9[4] = {100, 108, 99};
    int16_t pdoa_gains_ch5[4] = {100, 94, 103};
    int16_t pdoa_gains_ch2[4] = {100, 108, 99};
#else
    // 3-ANTs: 1, 2, 3
    int16_t pdoa_delays_ch9[4] = {47, 57, 0};
    int16_t pdoa_delays_ch5[4] = {-73, -57, 0};
    int16_t pdoa_delays_ch2[4] = {47, 57, 0};
    int16_t pdoa_gains_ch9[4] = {99, 98, 100};
    int16_t pdoa_gains_ch5[4] = {103, 87, 100};
    int16_t pdoa_gains_ch2[4] = {99, 98, 100};
#endif
    int16_t pdoa_offsets[2] = {0, 0};
    board_param.pdoa_ant_space = 180;
#elif RX_ANT_PORTS_NUM == 2
#if 0
    // 2-ANTs: 2, 3
    int16_t pdoa_delays_ch9[4] = {57, 0};
    int16_t pdoa_delays_ch5[4] = {-57, 0};
    int16_t pdoa_delays_ch2[4] = {57, 0};
    int16_t pdoa_gains_ch9[4] = {98, 100};
    int16_t pdoa_gains_ch5[4] = {87, 100};
    int16_t pdoa_gains_ch2[4] = {98, 100};
#else
    // 2-ANTs: 3, 0
    int16_t pdoa_delays_ch9[4] = {0, 36};
    int16_t pdoa_delays_ch5[4] = {0, 51};
    int16_t pdoa_delays_ch2[4] = {0, 36};
    int16_t pdoa_gains_ch9[4] = {100, 108};
    int16_t pdoa_gains_ch5[4] = {100, 94};
    int16_t pdoa_gains_ch2[4] = {100, 108};
#endif
    int16_t pdoa_offsets[2] = {0, 0};
    board_param.pdoa_ant_space = 180;
#endif
#endif
    memcpy((uint8_t *)&board_param.ant_delays[CALIB_CH9], ant_delays_ch9, sizeof(ant_delays_ch9));
    memcpy((uint8_t *)&board_param.ant_delays[CALIB_CH5], ant_delays_ch5, sizeof(ant_delays_ch5));
    memcpy((uint8_t *)&board_param.ant_delays[CALIB_CH2], ant_delays_ch2, sizeof(ant_delays_ch2));
#if RX_ANT_PORTS_NUM > 1
    memcpy((uint8_t *)&board_param.pdoa_delays[CALIB_CH9], pdoa_delays_ch9, sizeof(pdoa_delays_ch9));
    memcpy((uint8_t *)&board_param.pdoa_delays[CALIB_CH5], pdoa_delays_ch5, sizeof(pdoa_delays_ch5));
    memcpy((uint8_t *)&board_param.pdoa_delays[CALIB_CH2], pdoa_delays_ch2, sizeof(pdoa_delays_ch2));
    memcpy((uint8_t *)&board_param.pdoa_gains[CALIB_CH9], pdoa_gains_ch9, sizeof(pdoa_gains_ch9));
    memcpy((uint8_t *)&board_param.pdoa_gains[CALIB_CH5], pdoa_gains_ch5, sizeof(pdoa_gains_ch5));
    memcpy((uint8_t *)&board_param.pdoa_gains[CALIB_CH2], pdoa_gains_ch2, sizeof(pdoa_gains_ch2));
    memcpy((uint8_t *)&board_param.pdoa_offsets[0], pdoa_offsets, sizeof(pdoa_offsets));
#endif
    board_param.dev_role = 0;
    board_param.dev_role_idx = 0;
#endif
}
void board_calibration_params_load(void)
{
    board_calibration_params_default();
#ifdef WSF_EN
    if (TRUE == WsfNvmReadData(BOARD_LOAD_CAP, &board_param.load_cap, sizeof(board_param.load_cap), 0))
    {
        board_param.flag |= (1 << BOARD_LOAD_CAP);
    }
    if (TRUE == WsfNvmReadData(BOARD_TX_POWER_FCC_LEVEL, &board_param.tx_power_fcc[0], sizeof(board_param.tx_power_fcc), 0))
    {
        board_param.flag |= (1 << BOARD_TX_POWER_FCC_LEVEL);
    }
    if (TRUE == WsfNvmReadData(BOARD_RANGING_SESSION_ID, (uint8_t *)&board_param.ranging_session_id, sizeof(board_param.ranging_session_id), 0))
    {
        board_param.flag |= (1 << BOARD_RANGING_SESSION_ID);
    }
    if (TRUE == WsfNvmReadData(BOARD_LOCAL_SHORT_ADDR, (uint8_t *)&board_param.local_short_addr, sizeof(board_param.local_short_addr), 0))
    {
        board_param.flag |= (1 << BOARD_LOCAL_SHORT_ADDR);
    }
    if (TRUE == WsfNvmReadData(BOARD_PEER_SHORT_ADDR, (uint8_t *)&board_param.peer_short_addr, sizeof(board_param.peer_short_addr), 0))
    {
        board_param.flag |= (1 << BOARD_PEER_SHORT_ADDR);
    }
    if (TRUE == WsfNvmReadData(BOARD_ANT_DELAYS, (uint8_t *)&board_param.ant_delays[0], sizeof(board_param.ant_delays), 0))
    {
        board_param.flag |= (1 << BOARD_ANT_DELAYS);
    }
    if (TRUE == WsfNvmReadData(BOARD_PDOA_DELAYS, (uint8_t *)&board_param.pdoa_delays[0], sizeof(board_param.pdoa_delays), 0))
    {
        board_param.flag |= (1 << BOARD_PDOA_DELAYS);
    }
    if (TRUE == WsfNvmReadData(BOARD_PDOA_GAINS, (uint8_t *)&board_param.pdoa_gains[0], sizeof(board_param.pdoa_gains), 0))
    {
        board_param.flag |= (1 << BOARD_PDOA_GAINS);
    }
    if (TRUE == WsfNvmReadData(BOARD_PDOA_ANT_SPACE, (uint8_t *)&board_param.pdoa_ant_space, sizeof(board_param.pdoa_ant_space), 0))
    {
        board_param.flag |= (1 << BOARD_PDOA_ANT_SPACE);
    }
    if (TRUE == WsfNvmReadData(BOARD_PDOA_OFFSETS, (uint8_t *)&board_param.pdoa_offsets[0], sizeof(board_param.pdoa_offsets), 0))
    {
        board_param.flag |= (1 << BOARD_PDOA_OFFSETS);
    }
    if (TRUE == WsfNvmReadData(BOARD_DEV_ROLE, (uint8_t *)&board_param.dev_role, sizeof(board_param.dev_role), 0))
    {
        board_param.flag |= (1 << BOARD_DEV_ROLE);
    }
    if (TRUE == WsfNvmReadData(BOARD_DEV_ROLE_IDX, (uint8_t *)&board_param.dev_role_idx, sizeof(board_param.dev_role_idx), 0))
    {
        board_param.flag |= (1 << BOARD_DEV_ROLE_IDX);
    }
    if (TRUE == WsfNvmReadData(BOARD_X32K_LOAD_CAP, &board_param.x32k_load_cap, sizeof(board_param.x32k_load_cap), 0))
    {
        board_param.flag |= (1 << BOARD_X32K_LOAD_CAP);
    }
#endif
}
uint8_t board_calibration_param_write(uint8_t id, uint8_t *param, uint8_t param_len)
{
    uint8_t ret = 0;
#ifdef WSF_EN
    if (((id == BOARD_LOAD_CAP) && (param_len == sizeof(board_param.load_cap))) ||
        ((id == BOARD_TX_POWER_FCC_LEVEL) && (param_len == sizeof(board_param.tx_power_fcc))) ||
        ((id == BOARD_RANGING_SESSION_ID) && (param_len == sizeof(board_param.ranging_session_id))) ||
        ((id == BOARD_LOCAL_SHORT_ADDR) && (param_len == sizeof(board_param.local_short_addr))) ||
        ((id == BOARD_PEER_SHORT_ADDR) && (param_len == sizeof(board_param.peer_short_addr))) ||
        ((id == BOARD_ANT_DELAYS) && (param_len == sizeof(board_param.ant_delays))) ||
        ((id == BOARD_PDOA_DELAYS) && (param_len == sizeof(board_param.pdoa_delays))) ||
        ((id == BOARD_PDOA_GAINS) && (param_len == sizeof(board_param.pdoa_gains))) ||
        ((id == BOARD_PDOA_ANT_SPACE) && (param_len == sizeof(board_param.pdoa_ant_space))) ||
        ((id == BOARD_PDOA_OFFSETS) && (param_len == sizeof(board_param.pdoa_offsets))) ||
        ((id == BOARD_DEV_ROLE) && (param_len == sizeof(board_param.dev_role))) ||
        ((id == BOARD_DEV_ROLE_IDX) && (param_len == sizeof(board_param.dev_role_idx))) ||
        ((id == BOARD_X32K_LOAD_CAP) && (param_len == sizeof(board_param.x32k_load_cap))))
    {
        ret = WsfNvmWriteData(id, param, param_len, 0);
    }
#endif
    return ret;
}
void board_ranging_result_correct(uint16_t *distance, int16_t *azimuth, int16_t *elevation)
{
    if ((distance == NULL) || (azimuth == NULL) || (elevation == NULL))
    {
        return;
    }
#if (ANT_PATTERN == ANT_PATTERN_SQUARE) // 3D
#elif (ANT_PATTERN == ANT_PATTERN_TRIANGLE_REGULAR) // 3D
#elif (ANT_PATTERN == ANT_PATTERN_LINEAR) // 2D -90 ~ 90
    // azimuth correction
    float post_azimuth = mk_q7_to_f32(*azimuth);
#if RX_ANT_PORTS_NUM == 4
    post_azimuth = (int16_t)(1.1221f * post_azimuth + 0.2729f);
#elif RX_ANT_PORTS_NUM == 3
    post_azimuth = (int16_t)(1.2287f * post_azimuth + 1.3633f);
#elif RX_ANT_PORTS_NUM == 2
    if (post_azimuth < -13.1)
    {
        post_azimuth = (int16_t)(0.8719f * post_azimuth - 28.282f);
    }
    else if (post_azimuth < -4.6)
    {
        post_azimuth = (int16_t)(3.7137f * post_azimuth + 10.307f);
    }
    else
    {
        post_azimuth = (int16_t)(1.0492f * post_azimuth - 3.1928f);
    }
#endif
    post_azimuth = ((post_azimuth > 90) ? 90 : ((post_azimuth < -90) ? -90 : post_azimuth));
    *azimuth = mk_f32_to_q7(post_azimuth);
#endif
}
void board_5V_input_init(GPIO_IRQ_HANDLER_T irq_handler)
{
        button_irq_handler = irq_handler;
    gpio_pin_set_dir(IO_PIN_9, GPIO_DIR_IN, 0);
    io_pull_set(IO_PIN_9, IO_PULL_DOWN, IO_PULL_UP_LEVEL4);
//    gpio_enable_irq(IO_PIN_9, GPIO_IRQ_TYPE_RISING_EDGE, button_irq_handler);
//    power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)IO_PIN_9, POWER_WAKEUP_LEVEL_LOW);
}
void board_button_init(GPIO_IRQ_HANDLER_T irq_handler)
{
    button_irq_handler = irq_handler;
    gpio_pin_set_dir(BOARD_SW_1, GPIO_DIR_IN, 0);
    io_pull_set(BOARD_SW_1, IO_PULL_UP, IO_PULL_UP_LEVEL4);
    gpio_enable_irq(BOARD_SW_1, GPIO_IRQ_TYPE_FALLING_EDGE, button_irq_handler);
    power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)BOARD_SW_1, POWER_WAKEUP_LEVEL_LOW);
}
void board_led_init(void)
{
    gpio_pin_set_dir(BOARD_LED_1, GPIO_DIR_OUT, 0);
    gpio_pin_set_dir(BOARD_LED_2, GPIO_DIR_OUT, 0);
}
void board_led_on(enum IO_PIN_T idx)
{
    gpio_pin_set(idx);
}
void board_led_off(enum IO_PIN_T idx)
{
    gpio_pin_clr(idx);
}
void board_led_toggle(enum IO_PIN_T idx)
{
    gpio_pin_toggle(idx);
}
void board_configure(void)
{
}
void board_prepare_for_power_down(void)
{
#if !defined(CELL_PHONE_EN)
    board_led_off(BOARD_LED_1);
#endif
}
void board_restore_from_power_down(void)
{
#if defined(UCI_INTF_PORT)
    uci_tl_resume();
#else
    // button - restore interrupt type
    if (button_irq_handler)
    {
        gpio_enable_irq(BOARD_SW_1, GPIO_IRQ_TYPE_FALLING_EDGE, button_irq_handler);
    }
#endif
#if !defined(CELL_PHONE_EN)
    board_led_on(BOARD_LED_1);
#endif
    // system timer
    sys_timer_open();
#if TRACE_EN
    trace_open(user_trace_port, TRACE_BAUD_RATE);
#endif
}
keil/include/board/board.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,244 @@
/*
 * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and
 * its subsidiaries and affiliates (collectly called MKSEMI).
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form, except as embedded into an MKSEMI
 *    integrated circuit in a product or a software update for such product,
 *    must reproduce the above copyright notice, this list of conditions and
 *    the following disclaimer in the documentation and/or other materials
 *    provided with the distribution.
 *
 * 3. Neither the name of MKSEMI nor the names of its contributors may be used
 *    to endorse or promote products derived from this software without
 *    specific prior written permission.
 *
 * 4. This software, with or without modification, must only be used with a
 *    MKSEMI integrated circuit.
 *
 * 5. Any software provided in binary form under this license must not be
 *    reverse engineered, decompiled, modified and/or disassembled.
 *
 * THIS SOFTWARE IS PROVIDED BY MKSEMI "AS IS" AND ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL MKSEMI OR CONTRIBUTORS BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
#ifndef BOARD_H_
#define BOARD_H_
#include "mk_common.h"
#include "mk_trace.h"
#include "mk_gpio.h"
/*   LGA                CSP
IO00 - UART1 RX         - UART1 RX
IO01 - UART1 TX         - UART1 TX (trace port)
IO02 - Ranging Role     - Ranging Role
IO03 -                  - ISP_EN
IO04 -                  - UCI Handshake S->H
IO05 - UART0_TX         - UART0_TX | SPI_MISO
IO06 - UART0_RX         - UART0_RX | SPI_MOSI
IO07 - LED              - LED      | SPI_CLK
IO08 - LED              - LED      | SPI_CS
IO09 -                  - EXT Flash
IO10 -                  - EXT Flash
IO11 - SPI_MOSI         - EXT Flash
IO12 - SPI_MISO         - EXT Flash
IO13 - SPI_CLK          - EXT Flash
IO14 - SPI_CS           - EXT Flash
IO15 - SWDIO            - SWDIO
IO16 - SWDCLK           - SWDCLK
IO17 - Button           - UCI Handshake H->S
*/
/* Evaluation Kit */
#define BOARD_TYPE MK8000_EVK
/* Board buttons */
#define BOARD_SW_1 IO_PIN_17
/* Board leds */
#define BOARD_LED_1 IO_PIN_7
#define BOARD_LED_2 IO_PIN_8
/** UCI handshake pin, from host to slave  */
#define HOST2SLAVE_HS_GPIO (IO_PIN_17)
/** UCI handshake pin, from slave to host */
#define SLAVE2HOST_HS_GPIO (IO_PIN_4)
#define CALIB_CH9 0
#define CALIB_CH5 1
#define CALIB_CH2 2
#define CALIB_CH_NUM 3
#define CALIB_CH(x) (x == 9 ? 0 : (x == 5 ? 1 : 2))
enum BOARD_NVM_ITEM_ID_T
{
    BOARD_LOAD_CAP = 1,
    BOARD_LOCAL_SHORT_ADDR = 2,
    BOARD_PEER_SHORT_ADDR = 3,
    BOARD_RANGING_SESSION_ID = 4,
    BOARD_TX_POWER_FCC_LEVEL = 5,
    BOARD_ANT_DELAYS = 6,
    BOARD_DEV_ROLE = 7,
    BOARD_DEV_ROLE_IDX = 8,
    BOARD_PDOA_DELAYS = 9,
    BOARD_PDOA_GAINS = 10,
    BOARD_PDOA_ANT_SPACE = 11,
    BOARD_PDOA_OFFSETS = 12,
    BOARD_X32K_LOAD_CAP = 13,
};
/* Board parameters */
struct BOARD_PARAM_T
{
    uint32_t flag;
    uint8_t load_cap;
    uint8_t tx_power_fcc[CALIB_CH_NUM]; // [CH9, CH5, CH2]
    uint16_t ranging_session_id;
    uint16_t local_short_addr;
    uint16_t peer_short_addr;
    int16_t ant_delays[CALIB_CH_NUM][4];  // [CH9, CH5, CH2][ANT0, ANT1, ANT2, ANT3], unit: 15.65ps
    int16_t pdoa_delays[CALIB_CH_NUM][4]; // [CH9, CH5, CH2][ANT0, ANT1, ANT2, ANT3], uint: ps
    int16_t pdoa_gains[CALIB_CH_NUM][4];  // [CH9, CH5, CH2][ANT0, ANT1, ANT2, ANT3]
    int16_t pdoa_ant_space;               // unit: 0.1mm
    int16_t pdoa_offsets[2];              // [azimuth, elevation], unit: 0.1degree
    uint8_t dev_role;
    uint8_t dev_role_idx;
    uint8_t x32k_load_cap;
};
#if defined(__cplusplus)
extern "C" {
#endif
extern struct BOARD_PARAM_T board_param;
/**
 * @brief Configure clock.
 *
 */
void board_clock_run(void);
/**
 * @brief Configure pin routing and optionally pin electrical features.
 *
 */
void board_pins_config(void);
/**
 * @brief Configure debug trace port.
 * @param[in] port      Trace port
 *
 */
void board_debug_console_open(enum TRACE_PORT_T port);
/**
 * @brief Load default calibration parameters.
 *
 */
void board_calibration_params_default(void);
/**
 * @brief Load calibration parameters from NVM.
 *
 */
void board_calibration_params_load(void);
/**
 * @brief Write calibration item into NVM.
 * @param[in] id            calibration item ID
 * @param[in] param         pointer of the parameter to be written
 * @param[in] param_len     parameter length
 * @return TRUE sucess or FALSE fail
 */
uint8_t board_calibration_param_write(uint8_t id, uint8_t *param, uint8_t param_len);
/**
 * @brief Correct ranging result, correction formula depends on the antenna design
 *
 * @param [inout] distance         Pointer of ranging distance result
 * @param [inout] azimuth          Pointer of azimuth result
 * @param [inout] elevation        Pointer of elevation result
 */
void board_ranging_result_correct(uint16_t *distance, int16_t *azimuth, int16_t *elevation);
/**
 * @brief Configure button GPIO.
 * @param[in] irq_handler       button interrupt process handler
 *
 */
void board_button_init(GPIO_IRQ_HANDLER_T irq_handler);
/**
 * @brief Configure button GPIO.
 * @param[in] irq_handler 5v input interrupt process handler
 *
 */
void board_5V_input_init(GPIO_IRQ_HANDLER_T irq_handler);
/**
 * @brief Configure LED GPIO.
 *
 */
void board_led_init(void);
/**
 * @brief LED on.
 * @param[in] idx       LED index
 *
 */
void board_led_on(enum IO_PIN_T idx);
/**
 * @brief LED off.
 * @param[in] idx       LED index
 *
 */
void board_led_off(enum IO_PIN_T idx);
/**
 * @brief LED toggle.
 * @param[in] idx       LED index
 *
 */
void board_led_toggle(enum IO_PIN_T idx);
/**
 * @brief Configure peripherals on board (for board function extension).
 *
 */
void board_configure(void);
/**
 * @brief Prepare to enter power down mode.
 *
 */
void board_prepare_for_power_down(void);
/**
 * @brief Restore board setting from power down mode.
 *
 */
void board_restore_from_power_down(void);
#if defined(__cplusplus)
}
#endif
#endif /* BOARD_H_ */
keil/include/components/algo/inc/MK8000_kf_top.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,106 @@
/*
 * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and
 * its subsidiaries and affiliates (collectly called MKSEMI).
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form, except as embedded into an MKSEMI
 *    integrated circuit in a product or a software update for such product,
 *    must reproduce the above copyright notice, this list of conditions and
 *    the following disclaimer in the documentation and/or other materials
 *    provided with the distribution.
 *
 * 3. Neither the name of MKSEMI nor the names of its contributors may be used
 *    to endorse or promote products derived from this software without
 *    specific prior written permission.
 *
 * 4. This software, with or without modification, must only be used with a
 *    MKSEMI integrated circuit.
 *
 * 5. Any software provided in binary form under this license must not be
 *    reverse engineered, decompiled, modified and/or disassembled.
 *
 * THIS SOFTWARE IS PROVIDED BY MKSEMI "AS IS" AND ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL MKSEMI OR CONTRIBUTORS BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
#ifndef MK8000_KF_TOP_H
#define MK8000_KF_TOP_H
#include "mk_common.h"
#define ANGLE_AMBIGUITY_THRES 280
enum KF_CHANNEL_TYPE_T
{
    KF_CHANNEL_TYPE_RANGING = 0,
    KF_CHANNEL_TYPE_ANGLE = 1,
    KF_CHANNEL_TYPE_ANGLE_POSITIVE = 2,
};
typedef struct
{
    float dt;
    float Q;               // covariance of the process noise
    float rR;              // covariance of the obervation noise for ranging
    float aR;              // covariance of the obervation noise for azimuth & elevation
    float r_v_max;         // ranging velocity limit for state estimation
    float a_v_max;         // azimuth/elevation velocity limit for state estimation
    uint16_t r_vlimit_opt; // enable ranging velocity limitation
    uint16_t a_vlimit_opt; // enable azimuth/elevation velocity limitation
} kf_params_t;
extern uint8_t pdoa_3d_ant_layout_get(void);
typedef struct
{
    int row, col;
    float *element;
} Mat;
typedef struct
{
    Mat H;
    Mat F;
    Mat G;
    Mat P_t_tm1;
    Mat X_t_tm1;
    Mat K_t;
    Mat X_t_t;
    float last_post_range;
    float v_max;
    float v_max_default;
    float q_variance;
    uint16_t v_state;
    uint16_t v_max_cnt;
} kf_channel_env_t;
typedef struct
{
    float mat_H[1 * 2];
    float mat_P_t_tm1[2 * 2];
    float mat_X_t_tm1[2 * 1];
    float mat_K_t[2 * 1];
    float mat_X_t_t[2 * 1];
    float mat_F[2 * 2];
    float mat_G[2 * 1];
} kf_channel_mat_value_t;
void MK8000_kf_config(kf_params_t params, kf_channel_env_t *channel_env, kf_channel_mat_value_t *channel_mat_value, size_t cache_len);
void MK8000_kf_processor(float data_meas, uint16_t channel, enum KF_CHANNEL_TYPE_T type, int8_t do_init, float *post_data);
#endif // MK8000_KF_TOP_H
keil/include/components/algo/inc/lib_aoa.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,295 @@
/*
 * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and
 * its subsidiaries and affiliates (collectly called MKSEMI).
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form, except as embedded into an MKSEMI
 *    integrated circuit in a product or a software update for such product,
 *    must reproduce the above copyright notice, this list of conditions and
 *    the following disclaimer in the documentation and/or other materials
 *    provided with the distribution.
 *
 * 3. Neither the name of MKSEMI nor the names of its contributors may be used
 *    to endorse or promote products derived from this software without
 *    specific prior written permission.
 *
 * 4. This software, with or without modification, must only be used with a
 *    MKSEMI integrated circuit.
 *
 * 5. Any software provided in binary form under this license must not be
 *    reverse engineered, decompiled, modified and/or disassembled.
 *
 * THIS SOFTWARE IS PROVIDED BY MKSEMI "AS IS" AND ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL MKSEMI OR CONTRIBUTORS BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
#ifndef AOA_LIB_H
#define AOA_LIB_H
#include "mk_uwb.h"
/**
 * @addtogroup MK8000_ALGO_AOA
 * @{
 *
 * AoA support:
 * - Linear 2/3/4-ants
 * - Square 4-ants (horizontal - 360 degree)
 *
 */
#ifndef AOA_3D_EN
#define AOA_3D_EN (0)
#endif
#if AOA_3D_EN
#ifndef XIP_EN
extern const uint32_t svec_ch5_ptr[120 * 19 * RX_ANT_PORTS_NUM];
extern const uint32_t svec_ch9_ptr[120 * 19 * RX_ANT_PORTS_NUM];
#else
extern uint32_t svec_ch5_ptr[120 * 19 * RX_ANT_PORTS_NUM];
extern uint32_t svec_ch9_ptr[120 * 19 * RX_ANT_PORTS_NUM];
#endif
#else
#ifndef XIP_EN
extern const uint32_t svec_ch5_ptr[360 * RX_ANT_PORTS_NUM];
extern const uint32_t svec_ch9_ptr[360 * RX_ANT_PORTS_NUM];
#else
extern uint32_t svec_ch5_ptr[360 * RX_ANT_PORTS_NUM];
extern uint32_t svec_ch9_ptr[360 * RX_ANT_PORTS_NUM];
#endif
#endif
// (aux_mode << 4) | (algo_option)
enum AOA_AUX_OPT_T
{
    // 135us
    AOA_AUX_ANT_IQ_RSSI = ((1 << 4) | 3),
    // 239us
    AOA_AUX_ANT_IQ_RSSI_PDOA = ((1 << 4) | 0),
    // 312us
    AOA_AUX_ANT_IQ_RSSI_PDOA_AOA = ((1 << 4) | 2),
    // 930us
    AOA_AUX_ANT_IQ_RSSI_PDOA_AOA_FOM = ((2 << 4) | 2),
};
// Structure holding the angle information for steering vector generation
struct AOA_ANGLE_SPAN_T
{
    uint16_t Ndim;    ///> Number of dimensions. 1 - Azimuth only, 2 - Azimuth and Elevation
    int16_t az_low;   ///> Lower end of azimuth scan range (in degrees)
    int16_t az_high;  ///> Higher end of azimuth scan range (in degrees)
    uint16_t az_step; ///> Azimuth step size in degrees. Normally 3
    int16_t el_low;   ///> Lower end of elevation scan range (in degrees)
    int16_t el_high;  ///> Higher end of elevation scan range (in degrees)
    uint16_t el_step; ///> Elevation step size in degrees. Normally 3
};
#ifdef __cplusplus
extern "C" {
#endif
/**
 * @brief Set angle search span
 *
 * @param [in] span           pointer to AoA angle search span structure
 */
void aoa_angle_search_span_set(struct AOA_ANGLE_SPAN_T *span);
/**
 * @brief Configure AoA parameters.
 * @return Size of samples that need LSP to process
 */
uint16_t aoa_param_config(void);
/**
 * @brief Update AoA parameters.
 * @param [in] main_ant         RX main antenna
 */
void aoa_param_update(uint8_t main_ant);
/**
 * @brief Enable or disable dynamic port selection
 * @param [in] enable           0: disable, 1: enable
 */
void aoa_param_dynamic_port_sel(uint8_t enable);
/**
 * @brief Calculate AoA.
 *
 * @param [out] elevation     AoA elevation result
 * @param [out] azimuth       AoA azimuth result
 * @return 1: success, 2: failure
 */
uint8_t aoa_calculate(int16_t *elevation, int16_t *azimuth);
/**
 * @brief Get AoA FoM.
 *
 * @param [out] elevation_fom       AoA elevation FoM
 * @param [out] azimuth_fom         AoA azimuth FoM
 */
void aoa_fom_get(uint8_t *elevation_fom, uint8_t *azimuth_fom);
/**
 * @brief Store LSP result of RX ranging frame.
 */
void sts_lsp_store(void);
/**
 * @brief Stop storing LSP result of RX ranging frame.
 */
void sts_lsp_store_stop(void);
/**
 * @brief Validate STS.
 * @return 1 represents STS is valid
 */
uint8_t sts_valid_check(void);
/**
 * @brief Detect the fisrt path of ranging frame based on STS.
 * @param [in] rssi                 RSSI
 * @param [out] sts_main_path_loc   STS main path location
 * @param [out] sts_fap_loc         STS FAP location
 * @return delta of the first path
 */
int32_t sts_first_path_detect(int8_t rssi, uint16_t *sts_main_path_loc, uint16_t *sts_fap_loc);
/**
 * @brief Calculate RX main antenna based on STS RSSI.
 * @param [in][out]                 Input current main antenna ID, ouput updated main antenna ID
 */
void sts_rx_main_ant_get(uint8_t *id);
/**
 * @brief Get 4 antenna port RSSI.
 * @return array of 4 antenna port RSSI
 */
float *sts_4ant_rssi_get(void);
/**
 * @brief Configure location post process filter.
 *
 * @param [in] update_period_ms     Input data update period
 * @param [in] range_en             Enable filter for range data
 * @param [in] angle_en             Enable filter for angle data
 */
void loc_post_filter_config(uint32_t update_period_ms, uint8_t range_en, uint8_t angle_en);
/**
 * @brief Location post process filter.
 *
 * @param [in] channel              Filter channel
 * @param [in] range_meas           Input range data
 * @param [in] angle_meas           Input angle data
 * @param [out] range_post          Output range data
 * @param [out] angle_post          Output angle data
 * @return 1 represents post filter process successfully
 */
uint8_t loc_post_filter(uint8_t channel, float range_meas, int angle_meas, float *range_post, float *angle_post);
/**
 * @brief Set AOA aux mode.
 *
 * @param [in] mode     AOA aux mode @ref enum AOA_AUX_OPT_T
 */
void aoa_aux_info_set(enum AOA_AUX_OPT_T mode);
/**
 * @brief Set AOA steering vector based on channel
 *
 * @param [in] vector_table     AOA steering vector table
 */
void aoa_steering_vector_set(const float *vector_table);
/**
 * @brief Get PDoA ANT IQ result.
 *
 * @param [out] iq     Pointer of raw IQ data for all antennas
 * @return 1: success, 0: failure
 */
uint8_t pdoa_iq_get(float **iq);
/**
 * @brief Get PDoA result from ANT_start_index - ANT_end_index.
 *
 * @param [in] start_index      Antenna port start index, from 0 to 3
 * @param [in] end_index        Antenna port end index, from 0 to 3
 * @return PDoA result in radian
 */
float pdoa_select_get(uint8_t start_index, uint8_t end_index);
/**
 * @brief Set delay of antenna for PDoA
 *
 * @param [in] delays               Delay list of antenna port, uint: ps
 * @param [in] rx_ant_num           The number of antenna delays to be set
 * @return 0: success, -1: fail
 */
int pdoa_ant_delays_set(int16_t *delays, uint8_t rx_ant_num);
/**
 * @brief Get antenna delay for PDoA
 *
 * @param [in] delays               Delay list of antenna port, uint: ps
 * @param [in] rx_ant_num           The number of antenna delays to be get
 * @return 0: success, -1: fail
 */
int pdoa_ant_delays_get(int16_t *delays, uint8_t rx_ant_num);
/**
 * @brief Set adjacent antenna space
 *
 * @param [in] ant_space            the space of adjacent antennas, unit: 0.1mm
 */
int pdoa_ant_space_set(int16_t ant_space);
/**
 * @brief Get RSSI result.
 *
 * @return RSSI
 */
float *sts_rssi_output_get(void);
/**
 * @brief Get STS first path IQ of each antenna port, needs to call AoA calculation or PDoA calculation in advanced.
 *
 * @return STS first path IQ
 */
float *sts_first_path_iq_get(void);
/**
 * @brief Get AoA library version.
 *
 * @return String of AoA library version
 */
const char *MK8000_get_aoalib_version(void);
#ifdef __cplusplus
}
#endif
/**
 * @}
 */
#endif // AOA_LIB_H
keil/include/components/algo/inc/lib_kf.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,137 @@
/*
 * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and
 * its subsidiaries and affiliates (collectly called MKSEMI).
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form, except as embedded into an MKSEMI
 *    integrated circuit in a product or a software update for such product,
 *    must reproduce the above copyright notice, this list of conditions and
 *    the following disclaimer in the documentation and/or other materials
 *    provided with the distribution.
 *
 * 3. Neither the name of MKSEMI nor the names of its contributors may be used
 *    to endorse or promote products derived from this software without
 *    specific prior written permission.
 *
 * 4. This software, with or without modification, must only be used with a
 *    MKSEMI integrated circuit.
 *
 * 5. Any software provided in binary form under this license must not be
 *    reverse engineered, decompiled, modified and/or disassembled.
 *
 * THIS SOFTWARE IS PROVIDED BY MKSEMI "AS IS" AND ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL MKSEMI OR CONTRIBUTORS BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
#ifndef LIB_KF_H
#define LIB_KF_H
#include "mk_common.h"
enum KF_DATA_TYPE_T
{
    KF_DATA_TYPE_RANGING = 0,
    KF_DATA_TYPE_AZIMUTH = 1,
    KF_DATA_TYPE_ELEVATION = 2,
};
struct KF_MAC_ADDR_T
{
    uint8_t mac_addr[8];
    uint32_t elapsed_time;
    uint8_t data_type;
};
struct MAT_CACHE_T
{
    int row, col;
    float *element;
};
struct KF_MAT_VALUE_CACHE_T
{
    float float_1_2[1 * 1 * 2];
    float float_2_1[4 * 2 * 1];
    float float_2_2[2 * 2 * 2];
};
struct KF_CHANNEL_CACHE_T
{
    struct MAT_CACHE_T mat_cache[7];
    float float_cache[4];
    uint16_t uint16_t_chache[2];
};
/**
 * @addtogroup MK8000_ALGO_KF
 * @{
 */
#ifdef __cplusplus
extern "C" {
#endif
/**
 * @brief Configure location post process Kalman filter.
 *
 * @param[in] update_period_ms      Ranging result update period, unit: ms
 * @param[in] mac_addr_cache        mac address list input
 * @param[in] kf_channel_cache      kf channel state data list input
 * @param[in] mat_value_cache       kf mat data list input
 * @param[in] cache_len             list length(equal to the tag number supported)
 * @param[in] timeout_ms            timeout setting for Kalman filter, unit: millisecond
 */
void loc_post_kf_config(uint32_t update_period_ms,
                        struct KF_MAC_ADDR_T *mac_addr_cache,
                        struct KF_CHANNEL_CACHE_T *kf_channel_cache,
                        struct KF_MAT_VALUE_CACHE_T *mat_value_cache,
                        size_t cache_len,
                        uint32_t timeout_ms);
/**
 * @brief Filter input data.
 * @param[in] data_meas            data measurement result
 * @param[out] data_post           data filtered result
 * @param[in] channel              data type
 */
/**
 * @brief Filter input data.
 *
 * @param[in] data_meas          data measurement result
 * @param[in] data_type          data type
 * @param[in] mac_addr           mac address
 * @param[out] data_post         data filtered result
 * @return uint8_t
 */
uint8_t loc_kf_filter(float data_meas, enum KF_DATA_TYPE_T data_type, uint8_t *mac_addr, float *data_post);
/**
 * @brief Get KF lib version.
 * @return KF lib version
 */
const char *MK8000_get_kflib_version(void);
#ifdef __cplusplus
}
#endif
/**
 * @}
 */
#endif // LIB_KF_H
keil/include/components/algo/inc/lib_pdoa_3d.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,157 @@
/*
 * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and
 * its subsidiaries and affiliates (collectly called MKSEMI).
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form, except as embedded into an MKSEMI
 *    integrated circuit in a product or a software update for such product,
 *    must reproduce the above copyright notice, this list of conditions and
 *    the following disclaimer in the documentation and/or other materials
 *    provided with the distribution.
 *
 * 3. Neither the name of MKSEMI nor the names of its contributors may be used
 *    to endorse or promote products derived from this software without
 *    specific prior written permission.
 *
 * 4. This software, with or without modification, must only be used with a
 *    MKSEMI integrated circuit.
 *
 * 5. Any software provided in binary form under this license must not be
 *    reverse engineered, decompiled, modified and/or disassembled.
 *
 * THIS SOFTWARE IS PROVIDED BY MKSEMI "AS IS" AND ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL MKSEMI OR CONTRIBUTORS BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
#ifndef PDOA_3D_LIB_H
#define PDOA_3D_LIB_H
#include "mk_uwb.h"
/**
 * @addtogroup MK8000_ALGO_PDOA
 * @{
 *
 * PDoA support:
 * - Linear 2/3/4-ants
 * - Square 4-ants (horizontal - 360 degree, vertical - half ball 3D)
 * - Triangle 3-ants
 *
 */
enum PDOA_3D_AMBIGUITY_MODE_T
{
    PDOA_3D_AMBIGUITY_LEVEL_HIGH = 0,
    PDOA_3D_AMBIGUITY_LEVEL_MIDIUM,
    PDOA_3D_AMBIGUITY_LEVEL_LOW,
    PDOA_3D_AMBIGUITY_LEVEL_NONE,
};
struct PDOA_3D_MAC_ADDR_T
{
    uint8_t mac_addr[8];
    uint32_t elapsed_time;
};
struct PDOA_3D_PDOA_DATA_T
{
    int16_t pdoa[18];
};
#ifdef __cplusplus
extern "C" {
#endif
/**
 * @brief PDoA configuration.
 *
 * @param [in] ant_pattern      antenna pattern
 * @param [in] ant_layout       layout of PCB board configuration
 * @param [in] ambiguity_mode   PDoA ambiguity configuration
 * @param [in] mac_addr_cache   mac address list input
 * @param [in] azimuth          previous PDoA data list input
 * @param [in] cache_len        list length(equal to the tag number supported)
 * @param [in] timeout_ms       timeout setting for PDoA ambiguity process, unit: millisecond
 */
void pdoa_3d_param_config(uint8_t ant_pattern,
                          enum ANT_LAYOUT_T ant_layout,
                          enum PDOA_3D_AMBIGUITY_MODE_T ambiguity_mode,
                          struct PDOA_3D_MAC_ADDR_T *mac_addr_cache,
                          struct PDOA_3D_PDOA_DATA_T *pdoa_data_cache,
                          size_t cache_len,
                          uint32_t timeout_ms);
/**
 * @brief Calculate PDoA.
 *
 * @param [in] mac_addr         mac address
 * @param [out] elevation       PDoA elevation result
 * @param [out] azimuth         PDoA azimuth result
 * @return 1: success, 0: failure
 */
uint8_t pdoa_3d_calculate(uint8_t *mac_addr, int16_t *elevation, int16_t *azimuth);
/**
 * @brief Set gain of each PDoA channel
 *
 * @param [in] gain                 gain list of antenna port
 * @param [in] rx_ant_num           The number of antenna gain(PDoA channel) to be set
 * @return 0: success, -1: fail
 */
uint8_t pdoa_3d_ant_layout_get(void);
/**
 * @brief Set gain of each PDoA channel
 *
 * @param [in] gain                 gain list of antenna port, unit: 1 percent
 * @param [in] rx_ant_num           The number of antenna gain(PDoA channel) to be set
 * @return 0: success, -1: fail
 */
int pdoa_gain_set(int16_t *gain, uint8_t rx_ant_num);
/**
 * @brief Set offset for each angle
 *
 * @param [in] angle_offset         offset list for azimuth & elevation, unit: 0.1 degree
 */
int pdoa_angle_offset_set(int16_t *angle_offset);
/**
 * @brief Get pdoa fom
 *
 * @param ele_fom                   elevation fom, completely untrustworthy when fom equal to 0
 * @param az_fom                    azimuth fom, completely untrustworthy when fom equal to 0
 */
void pdoa_fom_get(uint8_t *ele_fom, uint8_t *az_fom);
/**
 * @brief Reverse angle
 *
 * @param azimuth_reverse reverse azimuth
 * @param elevation_reverse reverse elevation
 */
void pdoa_angle_reverse_set(bool azimuth_reverse, bool elevation_reverse);
#ifdef __cplusplus
}
#endif
/**
 * @}
 */
#endif // PDOA_3D_LIB_H
keil/include/components/algo/inc/lib_ranging.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,329 @@
/*
 * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and
 * its subsidiaries and affiliates (collectly called MKSEMI).
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form, except as embedded into an MKSEMI
 *    integrated circuit in a product or a software update for such product,
 *    must reproduce the above copyright notice, this list of conditions and
 *    the following disclaimer in the documentation and/or other materials
 *    provided with the distribution.
 *
 * 3. Neither the name of MKSEMI nor the names of its contributors may be used
 *    to endorse or promote products derived from this software without
 *    specific prior written permission.
 *
 * 4. This software, with or without modification, must only be used with a
 *    MKSEMI integrated circuit.
 *
 * 5. Any software provided in binary form under this license must not be
 *    reverse engineered, decompiled, modified and/or disassembled.
 *
 * THIS SOFTWARE IS PROVIDED BY MKSEMI "AS IS" AND ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL MKSEMI OR CONTRIBUTORS BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
#ifndef RANGING_LIB_H
#define RANGING_LIB_H
#include "mk_mac.h"
#include "mk_phy.h"
/**
 * @addtogroup MK8000_ALGO_Ranging
 * @{
 */
#ifndef CHEST_DUMP_EN
#define CHEST_DUMP_EN (1)
#endif
/* When debugging offline channel estimation, enable this macro */
#ifndef OFFLINE_CHEST_EN
#define OFFLINE_CHEST_EN (0)
#endif
// total channel tap length
#define MLAGS_LENGTH 160
// output channel tap length
#define CH_LEN_DEFAULT (128)
/** Ranging channel status information */
struct RANGING_CSI_T
{
    uint32_t session_id;
    uint32_t sts_index;
    uint16_t ranging_status;
    uint16_t block_index;
    uint16_t round_index;
    uint16_t distance_cm;
    int16_t azimuth;
    uint8_t ranging_fom;
    uint8_t azimuth_fom;
    uint8_t frame_idx;
    uint8_t rframe_idx;
    uint16_t reserved;
    // pre-poll | poll | final | final-data
    struct FRAME_INF_T
    {
        int8_t rssi;
        int8_t snr;
        uint8_t rf_gain;
        uint8_t bb_gain;
        uint16_t bd_cnt;
        uint16_t sfd_cnt;
        uint16_t error_code;
    } frame[4];
    // poll | final
    struct RFRAME_INF_T
    {
        int32_t freq_offset;
        float kfactor;
        uint32_t channel_power;
        uint32_t noise_power;
        int8_t main_tap_power;
        int8_t first_tap_power;
        uint8_t main_tap;
        uint8_t first_tap;
        uint8_t sts_main_tap;
        uint8_t sts_first_tap;
        uint8_t nlos;
        uint8_t fom;
        int8_t cir[128][2];
        float sts_taps[11];
    } rframe[2];
};
typedef struct
{
    int16_t tap1_loc;
    int16_t tap2_loc;
    int16_t tap3_loc;
    float tap1_re;
    float tap1_im;
    float tap2_re;
    float tap2_im;
    float tap3_re;
    float tap3_im;
    int16_t fap_loc;
    float fap_pow;
} ranging_aux_t;
typedef struct
{
    float Kfactor;          ///> ratio of the main tap to the total energy
    int16_t loc_deviation;  ///> Deviation in main tap location from the expected one
    float fom1;             ///> Mean excess delay spread
    float fom2;             ///> RMS delay spread
    float fom3;             ///> Channel type: 0/1 : LoS, 2: Multipath, 3: NLos
    ranging_aux_t aux_data; ///> First path location and energy
    float mean_npwr;        ///> Mean noise power (in offline CE mode) -- linear scale
    float max_npwr;         ///> Max noise power (in offline CE mode) -- linear scale
    float chpwr;            ///> Total channel power (in offline CE mode) -- linear scale
} ranging_FoM_t;
struct RANGING_TAPS_INF_T
{
    int16_t fap_loc;
    int16_t tap1_loc;
    int16_t tap2_loc;
    int16_t tap3_loc;
    float fap_pow;
    float tap1_pow;
    float tap2_pow;
    float tap3_pow;
    float Kfactor;         // ratio of the main tap to the total energy
    int16_t loc_deviation; // Deviation in main tap location from the expected one
    uint8_t NLoS;          // 0/1: LoS, 2: Multipath, 3: NLoS
    uint8_t FoM;           // 0 ~ 100
};
#ifdef __cplusplus
extern "C" {
#endif
#if CHEST_DUMP_EN
#define CIR_LEN 128
#define CE_WIN 16
#define PWR_TH 100
#define TAP_MARGIN 4
extern struct RANGING_CSI_T debug_csi;
uint8_t first_path_align(uint8_t *ce_chest_gaps, uint8_t *ce_chest_gaps_num, int8_t ce_chest[CIR_LEN][2], uint8_t ce_fap, uint8_t th, uint8_t margin);
uint8_t ranging_fom_calculate(struct RANGING_CSI_T *csi, uint8_t response_fom, uint8_t *response_tap_gaps, uint8_t response_tap_gaps_num);
void dump_preamble_cir(uint8_t idx, uint8_t taps_num);
void dump_sts_cir(uint8_t idx);
void print_preamble_chest(uint8_t rx_pkt_num, uint8_t rframe_num);
void print_sts_ch_taps(uint8_t rframe_num);
void calculate_first_tap_power(uint8_t rx_pkt_num, uint8_t rframe_num);
int8_t calculate_noise_floor(uint8_t rf_gain, uint8_t bb_gain);
#endif
/**
 * @brief Initialize all the global variables that will be used in the ranging lib.
 */
void ranging_lib_init(void);
/**
 * @brief Enable or disable ranging debug CSI output
 * @param[in] en        Enable or disable
 */
void ranging_debug_csi_en_set(uint8_t en);
/**
 * @brief Get ranging debug CSI output status
 * @return ranging debug CSI output status
 */
uint8_t ranging_debug_csi_en_get(void);
/**
 * @brief Set ranging frame type.
 * @param[in] type    ranging frame type, SP0 ~ SP3
 */
void ranging_frame_type_set(uint8_t type);
/**
 * @brief Get ranging frame type.
 * @return ranging frame type SP0 ~ SP3
 */
uint8_t ranging_frame_type_get(void);
/**
 * @brief Detect the fisrt path of ranging frame.
 * @param[in] rssi    Rx packet RSSI
 * @return delta of the first path
 */
int32_t ranging_first_path_detect(int8_t rssi);
/**
 * @brief Calculate TX timestamp of the ranging frame.
 *
 * @param[in] timestamp    PHY timer count of TX
 * @return TX timestamp (unit: 15.65ps)
 */
int64_t ranging_tx_time(uint32_t timestamp);
/**
 * @brief Calculate RX timestamp of the ranging frame.
 *
 * @param[in] ind    MAC RX report
 * @return RX timestamp (unit: 15.65ps)
 */
int64_t ranging_rx_time(const struct MAC_HW_REPORT_T *ind);
/**
 * @brief Get ranging FAP FoM.
 *
 * @param[out] NLoS     Non-Line of sight flag, 0/1: LoS, 2: Multipath, 3: NLoS
 * @param[out] FoM      FAP confidence measure, 0 ~ 100
 */
void ranging_fom_get(uint8_t *NLoS, uint8_t *FoM);
/**
 * @brief Get multi-taps information.
 *
 * @param[out] inf    multi-taps information
 */
void ranging_taps_inf_get(struct RANGING_TAPS_INF_T *inf);
/**
 * @brief Get multi-taps I/Q result.
 *
 * @param[out] chtaps_re pointer of output buffer of multi-taps real part
 * @param[out] chtaps_im pointer of output buffer of multi-taps imagine part
 * @param[in] taps_num number of taps to be get, the maximum value is 128
 */
void ranging_multi_taps_iq_get(float *chtaps_re, float *chtaps_im, uint8_t taps_num);
#if OFFLINE_CHEST_EN
/**
 * @brief Enable offline channel estimate.
 *
 * @param[in] en enable or disable
 */
void ranging_offline_chest_enable(uint8_t en);
#endif
/**
 * @brief Set antenna delay for ranging.
 *
 * @param[in] ant_idx       antenna port index, from 0 to 3
 * @param[in] delay_ps      antenna delay, unit 15.6ps
 */
void ranging_ant_delays_set(uint8_t ant_idx, int16_t delay_ps);
/**
 * @brief Get antenna delay for ranging.
 *
 * @param[in] ant_idx       antenna port index, from 0 to 3
 * @return antenna delay of the specified port, unit 15.6ps
 */
int16_t ranging_ant_delays_get(uint8_t ant_idx);
/**
 * @brief Select aux information output
 *
 * @param [in] len       Length of samples to be processed (64, 32)
 * @param [in] opt       Options for aux information
 *    0 (000)    -    No auxiliary data is generated
 *    1 (001)    -    combo 1 (Kfactor, location deviation, LoS/NLoS)
 *    2 (010)    -    combo 2 (3 largest taps info)
 *    4 (100)    -    combo 3 (Mean excess delay, RMS excess delay)
 *    3 (011)    -    combo 1 and combo 2
 *    5 (101)    -    combo 1 and combo 3
 *    7 (111)    -    combo 1, 2 and 3
 *
 */
void ranging_aux_out_opt_set(uint8_t len, uint8_t opt);
/**
 * @brief Get UWB RX RSSI.
 *
 * @param[out] rssi    RSSI (-110 ~ -10) dBm
 * @param[out] snr     SNR (-21 ~ 20) dB
 */
void ranging_rssi_get(int8_t *rssi, int8_t *snr);
/**
 * @brief Compute expected RSSI based on TX power and ranging distance result
 *
 * @param[in] uwb_tx_power      Ranging UWB TX power in dBm
 * @param[in] distance          Ranging distance result in cm
 * @param[in] path_loss_exp     Ranges from 2 to 5 (including fractional values, simplified here) 2 - for outdoor, 3 or 4 for multipath channels
 * @param[in] ant_gain_loss     Antenna gain or loss in dB
 */
int8_t ranging_expected_rssi_get(int8_t uwb_tx_power, uint16_t distance, uint8_t path_loss_exp, int8_t ant_gain_loss);
/**
 * @brief Get ranging library version.
 *
 * @return String of ranging library version
 */
const char *MK8000_get_rangelib_version(void);
#ifdef __cplusplus
}
#endif
/**
 * @}
 */
#endif // RANGING_LIB_H
keil/include/components/algo/inc/mk8000_present_interface.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,98 @@
/*
 * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and
 * its subsidiaries and affiliates (collectly called MKSEMI).
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form, except as embedded into an MKSEMI
 *    integrated circuit in a product or a software update for such product,
 *    must reproduce the above copyright notice, this list of conditions and
 *    the following disclaimer in the documentation and/or other materials
 *    provided with the distribution.
 *
 * 3. Neither the name of MKSEMI nor the names of its contributors may be used
 *    to endorse or promote products derived from this software without
 *    specific prior written permission.
 *
 * 4. This software, with or without modification, must only be used with a
 *    MKSEMI integrated circuit.
 *
 * 5. Any software provided in binary form under this license must not be
 *    reverse engineered, decompiled, modified and/or disassembled.
 *
 * THIS SOFTWARE IS PROVIDED BY MKSEMI "AS IS" AND ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL MKSEMI OR CONTRIBUTORS BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
#ifndef _MK8000_PRESENT_INTERFACE_H
#define _MK8000_PRESENT_INTERFACE_H
#include "radar_cfar.h"
struct Present_sto
{
    struct Cf_sto *cf_data;
    float *Y;
    int index;
    int flag;
};
struct Pres_para_sto
{
    struct Cp_fara_sto cp_para;
    int train;
    int rep;
    int frame;
    int norm;
    float apole;
    int acc;
};
/**
 *   \fn
 *   \brief static component process
 *
 *   \param [in]   in_X                     input data
 *   \param [in]   lenth                    length of input data
 *   \param [in]   pre_para                 input parameters
 *   \param [out]  present                  output data of presence
 *
 *   \note
 *
 */
int mcu_static_process_series(float *in_X, int lenth, struct Pres_para_sto *pre_para, struct Present_sto *present);
/**
 *   \fn
 *   \brief target detect process
 *
 *   \param [in]   in_X                     input data
 *   \param [in]   lenth                    length of input data
 *   \param [in]   pre_para                 input parameters
 *   \param [out]  present                  output data of presence
 */
void mcu_target_detect_process(float *in_X, int lenth, struct Pres_para_sto *pre_para, struct Present_sto *present);
/**
 *   \fn
 *   \brief Get present detect library version
 *   \return String of present detect library version
 *   \note
 */
const char *mk8000_get_presentlib_version(void);
#endif /* _MK8000_PRESENT_INTERFACE_H */
keil/include/components/algo/inc/radar_cfar.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
/*
 * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and
 * its subsidiaries and affiliates (collectly called MKSEMI).
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form, except as embedded into an MKSEMI
 *    integrated circuit in a product or a software update for such product,
 *    must reproduce the above copyright notice, this list of conditions and
 *    the following disclaimer in the documentation and/or other materials
 *    provided with the distribution.
 *
 * 3. Neither the name of MKSEMI nor the names of its contributors may be used
 *    to endorse or promote products derived from this software without
 *    specific prior written permission.
 *
 * 4. This software, with or without modification, must only be used with a
 *    MKSEMI integrated circuit.
 *
 * 5. Any software provided in binary form under this license must not be
 *    reverse engineered, decompiled, modified and/or disassembled.
 *
 * THIS SOFTWARE IS PROVIDED BY MKSEMI "AS IS" AND ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL MKSEMI OR CONTRIBUTORS BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
#ifndef _RADAR_CFAR_H
#define _RADAR_CFAR_H
struct Cf_sto
{
    float power;
    float power_th;
    float nse;
    int flag;
};
struct Cp_fara_sto
{
    int sec_alp[7];
    int sec_sol[7];
    int range[3];
    int ref_x[3];
    int sec_len;
    int tar_num;
    int nbor;
    float ma_val;
};
float calc_array_sum(struct Cf_sto *in_X, int strt_c, int len, int size_x);
float calc_array_order(struct Cf_sto *in_X, int strt_c, int len, int size_x);
void mcu_target_power_process_sec(struct Cf_sto *in_X, int lenth, struct Cp_fara_sto *pre_para);
/**
 *   \fn
 *   \brief target detect process const
 *
 *   \param [in]   in_X                     input data
 *   \param [in]   lenth                                         lenth of input data
 *   \param [in]   pre_para                 input parameter
 *
 *   \note
 *
 */
void mcu_target_power_process_cons(struct Cf_sto *in_X, int lenth, struct Cp_fara_sto *pre_para);
#endif /* _RADAR_CFAR_H */
keil/include/components/algo/src/kf/MK8000_kf_top.c
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,142 @@
/*
 * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and
 * its subsidiaries and affiliates (collectly called MKSEMI).
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form, except as embedded into an MKSEMI
 *    integrated circuit in a product or a software update for such product,
 *    must reproduce the above copyright notice, this list of conditions and
 *    the following disclaimer in the documentation and/or other materials
 *    provided with the distribution.
 *
 * 3. Neither the name of MKSEMI nor the names of its contributors may be used
 *    to endorse or promote products derived from this software without
 *    specific prior written permission.
 *
 * 4. This software, with or without modification, must only be used with a
 *    MKSEMI integrated circuit.
 *
 * 5. Any software provided in binary form under this license must not be
 *    reverse engineered, decompiled, modified and/or disassembled.
 *
 * THIS SOFTWARE IS PROVIDED BY MKSEMI "AS IS" AND ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL MKSEMI OR CONTRIBUTORS BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
/*
 *
 *  Modification History:
 *
 *
 */
#include "MK8000_kf_top.h"
#include "mk_trace.h"
#include "lib_kf.h"
#include "mk_misc.h"
static struct KF_MAC_ADDR_T *addr_arr;
static size_t kf_support_num = 0;
static uint32_t kf_timeout_ms = 0;
static int8_t do_init = 1;
static kf_params_t g_kf_params = {
    0.048f,    // should be equal to update time
    0.53356f,  // Q = (9.8/3)^2/20
    0.0036f,   // ranging_R = 0.06^2
    0.000625f, // azimuth_R = 0.025^2
    0.2f,      // ranging v_max in m/s
    10.0f,     // azimuth v_max in degree/s
    1,         // enable ranging velocity limitation
    1,         // enable azimuth/elevation velocity limitation
};
static uint16_t get_addr_index(uint8_t *mac_addr, uint8_t data_type)
{
    for (uint16_t i = 0; i < kf_support_num; i++)
    {
        if ((memcmp(addr_arr[i].mac_addr, mac_addr, 8) == 0) && (addr_arr[i].data_type == data_type))
        {
            return i;
        }
    }
    uint32_t min_time = addr_arr[0].elapsed_time;
    uint16_t min_time_index = 0;
    for (uint16_t i = 0; i < kf_support_num; i++)
    {
        if (addr_arr[i].elapsed_time < min_time)
        {
            min_time = addr_arr[i].elapsed_time;
            min_time_index = i;
        }
    }
    memcpy(addr_arr[min_time_index].mac_addr, mac_addr, 8);
    addr_arr[min_time_index].data_type = data_type;
    addr_arr[min_time_index].elapsed_time = 0;
    return min_time_index;
}
void loc_post_kf_config(uint32_t update_period_ms,
                        struct KF_MAC_ADDR_T *mac_addr_cache,
                        struct KF_CHANNEL_CACHE_T *kf_channel_cache,
                        struct KF_MAT_VALUE_CACHE_T *mat_value_cache,
                        size_t cache_len,
                        uint32_t timeout_ms)
{
    g_kf_params.dt = (float)(update_period_ms / 1000.0);
    addr_arr = mac_addr_cache;
    memset(addr_arr, 0, sizeof(struct KF_MAC_ADDR_T) * cache_len);
    kf_support_num = cache_len;
    kf_timeout_ms = timeout_ms;
    MK8000_kf_config(g_kf_params, (kf_channel_env_t *)kf_channel_cache, (kf_channel_mat_value_t *)mat_value_cache, cache_len);
}
uint8_t loc_kf_filter(float data_meas, enum KF_DATA_TYPE_T data_type, uint8_t *mac_addr, float *data_post)
{
    if (kf_support_num == 0)
    {
        return 0;
    }
    uint16_t id = get_addr_index(mac_addr, (uint8_t)data_type);
    uint32_t now = sys_tick_ms();
    if (addr_arr[id].elapsed_time == 0 || (now - addr_arr[id].elapsed_time) > kf_timeout_ms)
    {
        do_init = 1;
    }
    addr_arr[id].elapsed_time = now;
    enum KF_CHANNEL_TYPE_T type = KF_CHANNEL_TYPE_RANGING;
    if (data_type == KF_DATA_TYPE_AZIMUTH)
    {
        type = KF_CHANNEL_TYPE_ANGLE;
    }
    else if (data_type == KF_DATA_TYPE_ELEVATION)
    {
        if (pdoa_3d_ant_layout_get() == 0)
        {
            type = KF_CHANNEL_TYPE_ANGLE_POSITIVE;
        }
        else
        {
            type = KF_CHANNEL_TYPE_ANGLE;
        }
    }
    MK8000_kf_processor(data_meas, id, type, do_init, data_post);
    do_init = 0;
    return 1;
}
keil/include/components/algo/src/steering_vector/cmp_3D_svec_hex_sq4ant_az3el5_ch5.txt
¶Ô±ÈÐÂÎļþ
ÎļþÌ«´ó
keil/include/components/algo/src/steering_vector/cmp_3D_svec_hex_sq4ant_az3el5_ch9.txt
¶Ô±ÈÐÂÎļþ
ÎļþÌ«´ó
keil/include/components/algo/src/steering_vector/cmp_svec.c
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
#include <stdint.h>
#include "lib_aoa.h"
#if AOA_3D_EN
#ifndef XIP_EN
const uint32_t svec_ch5_ptr[120 * 19 * RX_ANT_PORTS_NUM] = {
#else
uint32_t svec_ch5_ptr[120 * 19 * RX_ANT_PORTS_NUM] = {
#endif
#include "cmp_3D_svec_hex_sq4ant_az3el5_ch5.txt"
};
#ifndef XIP_EN
const uint32_t svec_ch9_ptr[120 * 19 * RX_ANT_PORTS_NUM] = {
#else
uint32_t svec_ch9_ptr[120 * 19 * RX_ANT_PORTS_NUM] = {
#endif
#include "cmp_3D_svec_hex_sq4ant_az3el5_ch9.txt"
};
#else
#ifndef XIP_EN
const uint32_t svec_ch5_ptr[360 * RX_ANT_PORTS_NUM] = {
#else
uint32_t svec_ch5_ptr[360 * RX_ANT_PORTS_NUM] = {
#endif
#if (ANT_PATTERN == ANT_PATTERN_SQUARE)
#include "cmp_svec_hex_square4ant_ch5.txt"
#else
#if (RX_ANT_PORTS_NUM == 4)
#include "cmp_svec_hex_ch5.txt"
#elif (RX_ANT_PORTS_NUM == 3)
#include "cmp_svec_hex_3ant_ch5.txt"
#elif (RX_ANT_PORTS_NUM == 2)
#include "cmp_svec_hex_2ant_withzeros_ch5.txt"
#else
    0
#endif
#endif
};
#ifndef XIP_EN
const uint32_t svec_ch9_ptr[360 * RX_ANT_PORTS_NUM] = {
#else
uint32_t svec_ch9_ptr[360 * RX_ANT_PORTS_NUM] = {
#endif
#if (ANT_PATTERN == ANT_PATTERN_SQUARE)
#include "cmp_svec_hex_square4ant_ch9.txt"
#else
#if (RX_ANT_PORTS_NUM == 4)
#include "cmp_svec_hex_ch9.txt"
#elif (RX_ANT_PORTS_NUM == 3)
#include "cmp_svec_hex_3ant_ch9.txt"
#elif (RX_ANT_PORTS_NUM == 2)
#include "cmp_svec_hex_2ant_withzeros_ch9.txt"
#else
    0
#endif
#endif
};
#endif
keil/include/components/algo/src/steering_vector/cmp_svec_hex_2ant_withzeros_ch5.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,362 @@
0xd8d04040,
0x0,
0xd8d04040,
0x0,
0xd8d04040,
0x0,
0xd8d04040,
0x0,
0xd8d04040,
0x0,
0xd8d04040,
0x0,
0xd7d04040,
0x0,
0xd7d14040,
0x0,
0xd7d14040,
0x0,
0xd7d14040,
0x0,
0xd6d14040,
0x0,
0xd6d24040,
0x0,
0xd6d24040,
0x0,
0xd5d24040,
0x0,
0xd5d34040,
0x0,
0xd4d34040,
0x0,
0xd4d44040,
0x0,
0xd3d44040,
0x0,
0xd3d54040,
0x0,
0xd2d64040,
0x0,
0xd1d64040,
0x0,
0xd1d74040,
0x0,
0xd0d84040,
0x0,
0xcfd94040,
0x0,
0xcfd94040,
0x0,
0xceda4040,
0x0,
0xcddb4040,
0x0,
0xcddc4040,
0x0,
0xccdd4040,
0x0,
0xcbde4040,
0x0,
0xcae04040,
0x0,
0xcae14040,
0x0,
0xc9e24040,
0x0,
0xc8e34040,
0x0,
0xc8e54040,
0x0,
0xc7e64040,
0x0,
0xc6e74040,
0x0,
0xc6e94040,
0x0,
0xc5eb4040,
0x0,
0xc4ec4040,
0x0,
0xc4ee4040,
0x0,
0xc3f04040,
0x0,
0xc3f14040,
0x0,
0xc3f34040,
0x0,
0xc2f54040,
0x0,
0xc2f74040,
0x0,
0xc2f94040,
0x0,
0xc1fb4040,
0x0,
0xc1fd4040,
0x0,
0xc1ff4040,
0x0,
0xc1004040,
0x0,
0xc1024040,
0x0,
0xc1044040,
0x0,
0xc1064040,
0x0,
0xc2084040,
0x0,
0xc20b4040,
0x0,
0xc20d4040,
0x0,
0xc30f4040,
0x0,
0xc3114040,
0x0,
0xc4144040,
0x0,
0xc5164040,
0x0,
0xc6184040,
0x0,
0xc71a4040,
0x0,
0xc81c4040,
0x0,
0xc91f4040,
0x0,
0xca214040,
0x0,
0xcb234040,
0x0,
0xcd254040,
0x0,
0xce274040,
0x0,
0xd0294040,
0x0,
0xd12b4040,
0x0,
0xd32d4040,
0x0,
0xd52f4040,
0x0,
0xd7304040,
0x0,
0xd9324040,
0x0,
0xdb344040,
0x0,
0xdd354040,
0x0,
0xe0374040,
0x0,
0xe2384040,
0x0,
0xe4394040,
0x0,
0xe73a4040,
0x0,
0xe93b4040,
0x0,
0xec3c4040,
0x0,
0xee3d4040,
0x0,
0xf13e4040,
0x0,
0xf33f4040,
0x0,
0xf63f4040,
0x0,
0xf93f4040,
0x0,
0xfc404040,
0x0,
0xfe404040,
0x0,
0x404040,
0x0,
0x3404040,
0x0,
0x5404040,
0x0,
0x83f4040,
0x0,
0xb3f4040,
0x0,
0xe3f4040,
0x0,
0x103e4040,
0x0,
0x133d4040,
0x0,
0x153c4040,
0x0,
0x183b4040,
0x0,
0x1a3a4040,
0x0,
0x1d394040,
0x0,
0x1f384040,
0x0,
0x21374040,
0x0,
0x24354040,
0x0,
0x26344040,
0x0,
0x28324040,
0x0,
0x2a304040,
0x0,
0x2c2f4040,
0x0,
0x2e2d4040,
0x0,
0x302b4040,
0x0,
0x31294040,
0x0,
0x33274040,
0x0,
0x34254040,
0x0,
0x36234040,
0x0,
0x37214040,
0x0,
0x381f4040,
0x0,
0x391c4040,
0x0,
0x3a1a4040,
0x0,
0x3b184040,
0x0,
0x3c164040,
0x0,
0x3d144040,
0x0,
0x3e114040,
0x0,
0x3e0f4040,
0x0,
0x3f0d4040,
0x0,
0x3f0b4040,
0x0,
0x3f084040,
0x0,
0x40064040,
0x0,
0x40044040,
0x0,
0x40024040,
0x0,
0x40004040,
0x0,
0x40ff4040,
0x0,
0x40fd4040,
0x0,
0x40fb4040,
0x0,
0x3ff94040,
0x0,
0x3ff74040,
0x0,
0x3ff54040,
0x0,
0x3ef34040,
0x0,
0x3ef14040,
0x0,
0x3ef04040,
0x0,
0x3dee4040,
0x0,
0x3dec4040,
0x0,
0x3ceb4040,
0x0,
0x3be94040,
0x0,
0x3be74040,
0x0,
0x3ae64040,
0x0,
0x39e54040,
0x0,
0x39e34040,
0x0,
0x38e24040,
0x0,
0x37e14040,
0x0,
0x37e04040,
0x0,
0x36de4040,
0x0,
0x35dd4040,
0x0,
0x34dc4040,
0x0,
0x34db4040,
0x0,
0x33da4040,
0x0,
0x32d94040,
0x0,
0x32d94040,
0x0,
0x31d84040,
0x0,
0x30d74040,
0x0,
0x30d64040,
0x0,
0x2fd64040,
0x0,
0x2ed54040,
0x0,
0x2ed44040,
0x0,
0x2dd44040,
0x0,
0x2dd34040,
0x0,
0x2cd34040,
0x0,
0x2cd24040,
0x0,
0x2bd24040,
0x0,
0x2bd24040,
0x0,
0x2bd14040,
0x0,
0x2ad14040,
0x0,
0x2ad14040,
0x0,
0x2ad14040,
0x0,
0x2ad04040,
0x0,
0x29d04040,
0x0,
0x29d04040,
0x0,
0x29d04040,
0x0,
0x29d04040,
0x0,
0x29d04040,
0x0,
0x29d04040,
0x0,
keil/include/components/algo/src/steering_vector/cmp_svec_hex_2ant_withzeros_ch9.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,362 @@
0xf9c24040,
0x0,
0xf9c24040,
0x0,
0xf9c24040,
0x0,
0xf9c24040,
0x0,
0xf8c24040,
0x0,
0xf8c24040,
0x0,
0xf8c24040,
0x0,
0xf7c24040,
0x0,
0xf7c24040,
0x0,
0xf6c24040,
0x0,
0xf6c24040,
0x0,
0xf5c24040,
0x0,
0xf5c24040,
0x0,
0xf4c24040,
0x0,
0xf3c34040,
0x0,
0xf2c34040,
0x0,
0xf1c34040,
0x0,
0xf1c34040,
0x0,
0xf0c34040,
0x0,
0xefc44040,
0x0,
0xedc44040,
0x0,
0xecc44040,
0x0,
0xebc54040,
0x0,
0xeac54040,
0x0,
0xe9c64040,
0x0,
0xe7c64040,
0x0,
0xe6c74040,
0x0,
0xe5c84040,
0x0,
0xe3c84040,
0x0,
0xe2c94040,
0x0,
0xe1ca4040,
0x0,
0xdfcb4040,
0x0,
0xdecc4040,
0x0,
0xdccd4040,
0x0,
0xdbce4040,
0x0,
0xd9cf4040,
0x0,
0xd8d04040,
0x0,
0xd6d24040,
0x0,
0xd5d34040,
0x0,
0xd3d44040,
0x0,
0xd2d64040,
0x0,
0xd0d84040,
0x0,
0xcfd94040,
0x0,
0xcddb4040,
0x0,
0xccdd4040,
0x0,
0xcbdf4040,
0x0,
0xcae14040,
0x0,
0xc8e34040,
0x0,
0xc7e54040,
0x0,
0xc6e84040,
0x0,
0xc5ea4040,
0x0,
0xc4ed4040,
0x0,
0xc4ef4040,
0x0,
0xc3f24040,
0x0,
0xc2f44040,
0x0,
0xc2f74040,
0x0,
0xc1fa4040,
0x0,
0xc1fd4040,
0x0,
0xc1ff4040,
0x0,
0xc1014040,
0x0,
0xc1044040,
0x0,
0xc1074040,
0x0,
0xc20a4040,
0x0,
0xc20d4040,
0x0,
0xc3104040,
0x0,
0xc4134040,
0x0,
0xc5164040,
0x0,
0xc6194040,
0x0,
0xc71b4040,
0x0,
0xc91e4040,
0x0,
0xca214040,
0x0,
0xcc244040,
0x0,
0xce264040,
0x0,
0xd0294040,
0x0,
0xd22b4040,
0x0,
0xd42e4040,
0x0,
0xd6304040,
0x0,
0xd9324040,
0x0,
0xdb344040,
0x0,
0xde364040,
0x0,
0xe1374040,
0x0,
0xe4394040,
0x0,
0xe73a4040,
0x0,
0xea3c4040,
0x0,
0xed3d4040,
0x0,
0xf03e4040,
0x0,
0xf43f4040,
0x0,
0xf73f4040,
0x0,
0xfa404040,
0x0,
0xfe404040,
0x0,
0x404040,
0x0,
0x3404040,
0x0,
0x7404040,
0x0,
0xa3f4040,
0x0,
0xd3f4040,
0x0,
0x113e4040,
0x0,
0x143d4040,
0x0,
0x173c4040,
0x0,
0x1a3a4040,
0x0,
0x1d394040,
0x0,
0x20374040,
0x0,
0x23364040,
0x0,
0x26344040,
0x0,
0x28324040,
0x0,
0x2b304040,
0x0,
0x2d2e4040,
0x0,
0x2f2b4040,
0x0,
0x31294040,
0x0,
0x33264040,
0x0,
0x35244040,
0x0,
0x37214040,
0x0,
0x381e4040,
0x0,
0x3a1b4040,
0x0,
0x3b194040,
0x0,
0x3c164040,
0x0,
0x3d134040,
0x0,
0x3e104040,
0x0,
0x3f0d4040,
0x0,
0x3f0a4040,
0x0,
0x40074040,
0x0,
0x40044040,
0x0,
0x40014040,
0x0,
0x40ff4040,
0x0,
0x40fd4040,
0x0,
0x40fa4040,
0x0,
0x3ff74040,
0x0,
0x3ff44040,
0x0,
0x3ef24040,
0x0,
0x3def4040,
0x0,
0x3ded4040,
0x0,
0x3cea4040,
0x0,
0x3be84040,
0x0,
0x3ae54040,
0x0,
0x39e34040,
0x0,
0x37e14040,
0x0,
0x36df4040,
0x0,
0x35dd4040,
0x0,
0x34db4040,
0x0,
0x32d94040,
0x0,
0x31d84040,
0x0,
0x2fd64040,
0x0,
0x2ed44040,
0x0,
0x2cd34040,
0x0,
0x2bd24040,
0x0,
0x29d04040,
0x0,
0x28cf4040,
0x0,
0x26ce4040,
0x0,
0x25cd4040,
0x0,
0x23cc4040,
0x0,
0x22cb4040,
0x0,
0x20ca4040,
0x0,
0x1fc94040,
0x0,
0x1ec84040,
0x0,
0x1cc84040,
0x0,
0x1bc74040,
0x0,
0x1ac64040,
0x0,
0x18c64040,
0x0,
0x17c54040,
0x0,
0x16c54040,
0x0,
0x15c44040,
0x0,
0x14c44040,
0x0,
0x12c44040,
0x0,
0x11c34040,
0x0,
0x10c34040,
0x0,
0x10c34040,
0x0,
0xfc34040,
0x0,
0xec34040,
0x0,
0xdc24040,
0x0,
0xcc24040,
0x0,
0xcc24040,
0x0,
0xbc24040,
0x0,
0xbc24040,
0x0,
0xac24040,
0x0,
0xac24040,
0x0,
0x9c24040,
0x0,
0x9c24040,
0x0,
0x9c24040,
0x0,
0x8c24040,
0x0,
0x8c24040,
0x0,
0x8c24040,
0x0,
0x8c24040,
0x0,
keil/include/components/algo/src/steering_vector/cmp_svec_hex_3ant_ch5.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,543 @@
0xd0404040,
0xd03f0cd8,
0xd8,
0xd0404040,
0xd03f0cd8,
0xd8,
0xd0404040,
0xd03f0cd8,
0xd8,
0xd0404040,
0xd03f0bd8,
0xd8,
0xd0404040,
0xd03f0bd8,
0xd8,
0xd0404040,
0xd03f0bd8,
0xd8,
0xd0404040,
0xd03f0ad7,
0xd7,
0xd1404040,
0xd13f09d7,
0xd7,
0xd1404040,
0xd13f09d7,
0xd7,
0xd1404040,
0xd14008d7,
0xd7,
0xd1404040,
0xd14007d6,
0xd6,
0xd2404040,
0xd24006d6,
0xd6,
0xd2404040,
0xd24005d6,
0xd6,
0xd2404040,
0xd24004d5,
0xd5,
0xd3404040,
0xd34002d5,
0xd5,
0xd3404040,
0xd34001d4,
0xd4,
0xd4404040,
0xd44000d4,
0xd4,
0xd4404040,
0xd440ffd3,
0xd3,
0xd5404040,
0xd540fdd3,
0xd3,
0xd6404040,
0xd640fcd2,
0xd2,
0xd6404040,
0xd640fad1,
0xd1,
0xd7404040,
0xd73ff8d1,
0xd1,
0xd8404040,
0xd83ff6d0,
0xd0,
0xd9404040,
0xd93ff4cf,
0xcf,
0xd9404040,
0xd93ef2cf,
0xcf,
0xda404040,
0xda3ef0ce,
0xce,
0xdb404040,
0xdb3dedcd,
0xcd,
0xdc404040,
0xdc3cebcd,
0xcd,
0xdd404040,
0xdd3be9cc,
0xcc,
0xde404040,
0xde3ae6cb,
0xcb,
0xe0404040,
0xe039e4ca,
0xca,
0xe1404040,
0xe138e1ca,
0xca,
0xe2404040,
0xe236dfc9,
0xc9,
0xe3404040,
0xe335ddc8,
0xc8,
0xe5404040,
0xe533dac8,
0xc8,
0xe6404040,
0xe631d8c7,
0xc7,
0xe7404040,
0xe72fd5c6,
0xc6,
0xe9404040,
0xe92dd3c6,
0xc6,
0xeb404040,
0xeb2ad1c5,
0xc5,
0xec404040,
0xec27cfc4,
0xc4,
0xee404040,
0xee25cdc4,
0xc4,
0xf0404040,
0xf022cbc3,
0xc3,
0xf1404040,
0xf11fc9c3,
0xc3,
0xf3404040,
0xf31bc7c3,
0xc3,
0xf5404040,
0xf518c6c2,
0xc2,
0xf7404040,
0xf714c4c2,
0xc2,
0xf9404040,
0xf910c3c2,
0xc2,
0xfb404040,
0xfb0dc2c1,
0xc1,
0xfd404040,
0xfd09c2c1,
0xc1,
0xff404040,
0xff05c1c1,
0xc1,
0x404040,
0xc1c1,
0xc1,
0x2404040,
0x2fdc1c1,
0xc1,
0x4404040,
0x4f9c2c1,
0xc1,
0x6404040,
0x6f5c2c1,
0xc1,
0x8404040,
0x8f0c3c2,
0xc2,
0xb404040,
0xbecc5c2,
0xc2,
0xd404040,
0xde8c6c2,
0xc2,
0xf404040,
0xfe4c8c3,
0xc3,
0x11404040,
0x11e0cac3,
0xc3,
0x14404040,
0x14dccdc4,
0xc4,
0x16404040,
0x16d8d0c5,
0xc5,
0x18404040,
0x18d5d3c6,
0xc6,
0x1a404040,
0x1ad1d6c7,
0xc7,
0x1c404040,
0x1ccedac8,
0xc8,
0x1f404040,
0x1fcbdec9,
0xc9,
0x21404040,
0x21c9e2ca,
0xca,
0x23404040,
0x23c7e7cb,
0xcb,
0x25404040,
0x25c5eccd,
0xcd,
0x27404040,
0x27c3f0ce,
0xce,
0x29404040,
0x29c2f5d0,
0xd0,
0x2b404040,
0x2bc1fad1,
0xd1,
0x2d404040,
0x2dc100d3,
0xd3,
0x2f404040,
0x2fc104d5,
0xd5,
0x30404040,
0x30c209d7,
0xd7,
0x32404040,
0x32c30ed9,
0xd9,
0x34404040,
0x34c413db,
0xdb,
0x35404040,
0x35c618dd,
0xdd,
0x37404040,
0x37c81de0,
0xe0,
0x38404040,
0x38cb22e2,
0xe2,
0x39404040,
0x39ce26e4,
0xe4,
0x3a404040,
0x3ad12ae7,
0xe7,
0x3b404040,
0x3bd52ee9,
0xe9,
0x3c404040,
0x3cd932ec,
0xec,
0x3d404040,
0x3ddd35ee,
0xee,
0x3e404040,
0x3ee238f1,
0xf1,
0x3f404040,
0x3fe73af3,
0xf3,
0x3f404040,
0x3fec3cf6,
0xf6,
0x3f404040,
0x3ff13ef9,
0xf9,
0x40404040,
0x40f63ffc,
0xfc,
0x40404040,
0x40fc40fe,
0xfe,
0x40404040,
0x40004000,
0x0,
0x40404040,
0x40054003,
0x3,
0x40404040,
0x400b3f05,
0x5,
0x3f404040,
0x3f103e08,
0x8,
0x3f404040,
0x3f153c0b,
0xb,
0x3f404040,
0x3f1a3a0e,
0xe,
0x3e404040,
0x3e1f3810,
0x10,
0x3d404040,
0x3d243513,
0x13,
0x3c404040,
0x3c283215,
0x15,
0x3b404040,
0x3b2c2e18,
0x18,
0x3a404040,
0x3a302a1a,
0x1a,
0x39404040,
0x3933261d,
0x1d,
0x38404040,
0x3836221f,
0x1f,
0x37404040,
0x37391d21,
0x21,
0x35404040,
0x353b1824,
0x24,
0x34404040,
0x343d1326,
0x26,
0x32404040,
0x323e0e28,
0x28,
0x30404040,
0x303f092a,
0x2a,
0x2f404040,
0x2f40042c,
0x2c,
0x2d404040,
0x2d40002e,
0x2e,
0x2b404040,
0x2b40fa30,
0x30,
0x29404040,
0x293ff531,
0x31,
0x27404040,
0x273ef033,
0x33,
0x25404040,
0x253cec34,
0x34,
0x23404040,
0x233ae736,
0x36,
0x21404040,
0x2138e237,
0x37,
0x1f404040,
0x1f36de38,
0x38,
0x1c404040,
0x1c33da39,
0x39,
0x1a404040,
0x1a30d63a,
0x3a,
0x18404040,
0x182cd33b,
0x3b,
0x16404040,
0x1629d03c,
0x3c,
0x14404040,
0x1425cd3d,
0x3d,
0x11404040,
0x1121ca3e,
0x3e,
0xf404040,
0xf1dc83e,
0x3e,
0xd404040,
0xd19c63f,
0x3f,
0xb404040,
0xb15c53f,
0x3f,
0x8404040,
0x811c33f,
0x3f,
0x6404040,
0x60cc240,
0x40,
0x4404040,
0x408c240,
0x40,
0x2404040,
0x204c140,
0x40,
0x404040,
0xc140,
0x40,
0xff404040,
0xfffcc140,
0x40,
0xfd404040,
0xfdf8c240,
0x40,
0xfb404040,
0xfbf4c240,
0x40,
0xf9404040,
0xf9f1c33f,
0x3f,
0xf7404040,
0xf7edc43f,
0x3f,
0xf5404040,
0xf5e9c63f,
0x3f,
0xf3404040,
0xf3e6c73e,
0x3e,
0xf1404040,
0xf1e2c93e,
0x3e,
0xf0404040,
0xf0dfcb3e,
0x3e,
0xee404040,
0xeedccd3d,
0x3d,
0xec404040,
0xecdacf3d,
0x3d,
0xeb404040,
0xebd7d13c,
0x3c,
0xe9404040,
0xe9d4d33b,
0x3b,
0xe7404040,
0xe7d2d53b,
0x3b,
0xe6404040,
0xe6d0d83a,
0x3a,
0xe5404040,
0xe5ceda39,
0x39,
0xe3404040,
0xe3ccdd39,
0x39,
0xe2404040,
0xe2cbdf38,
0x38,
0xe1404040,
0xe1c9e137,
0x37,
0xe0404040,
0xe0c8e437,
0x37,
0xde404040,
0xdec7e636,
0x36,
0xdd404040,
0xddc6e935,
0x35,
0xdc404040,
0xdcc5eb34,
0x34,
0xdb404040,
0xdbc4ed34,
0x34,
0xda404040,
0xdac3f033,
0x33,
0xd9404040,
0xd9c3f232,
0x32,
0xd9404040,
0xd9c2f432,
0x32,
0xd8404040,
0xd8c2f631,
0x31,
0xd7404040,
0xd7c2f830,
0x30,
0xd6404040,
0xd6c1fa30,
0x30,
0xd6404040,
0xd6c1fc2f,
0x2f,
0xd5404040,
0xd5c1fd2e,
0x2e,
0xd4404040,
0xd4c1ff2e,
0x2e,
0xd4404040,
0xd4c1002d,
0x2d,
0xd3404040,
0xd3c1012d,
0x2d,
0xd3404040,
0xd3c1022c,
0x2c,
0xd2404040,
0xd2c1042c,
0x2c,
0xd2404040,
0xd2c1052b,
0x2b,
0xd2404040,
0xd2c1062b,
0x2b,
0xd1404040,
0xd1c1072b,
0x2b,
0xd1404040,
0xd1c1082a,
0x2a,
0xd1404040,
0xd1c2092a,
0x2a,
0xd1404040,
0xd1c2092a,
0x2a,
0xd0404040,
0xd0c20a2a,
0x2a,
0xd0404040,
0xd0c20b29,
0x29,
0xd0404040,
0xd0c20b29,
0x29,
0xd0404040,
0xd0c20b29,
0x29,
0xd0404040,
0xd0c20c29,
0x29,
0xd0404040,
0xd0c20c29,
0x29,
0xd0404040,
0xd0c20c29,
0x29,
keil/include/components/algo/src/steering_vector/cmp_svec_hex_3ant_ch9.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,543 @@
0xc2404040,
0xc2103ef9,
0xf9,
0xc2404040,
0xc2103ef9,
0xf9,
0xc2404040,
0xc2103ef9,
0xf9,
0xc2404040,
0xc2113ef9,
0xf9,
0xc2404040,
0xc2113ef8,
0xf8,
0xc2404040,
0xc2123ef8,
0xf8,
0xc2404040,
0xc2123df8,
0xf8,
0xc2404040,
0xc2133df7,
0xf7,
0xc2404040,
0xc2143df7,
0xf7,
0xc2404040,
0xc2153df6,
0xf6,
0xc2404040,
0xc2163cf6,
0xf6,
0xc2404040,
0xc2173cf5,
0xf5,
0xc2404040,
0xc2183bf5,
0xf5,
0xc2404040,
0xc21a3bf4,
0xf4,
0xc3404040,
0xc31b3af3,
0xf3,
0xc3404040,
0xc31d39f2,
0xf2,
0xc3404040,
0xc31e38f1,
0xf1,
0xc3404040,
0xc32038f1,
0xf1,
0xc3404040,
0xc32237f0,
0xf0,
0xc4404040,
0xc42335ef,
0xef,
0xc4404040,
0xc42534ed,
0xed,
0xc4404040,
0xc42733ec,
0xec,
0xc5404040,
0xc52931eb,
0xeb,
0xc5404040,
0xc52b2fea,
0xea,
0xc6404040,
0xc62d2ee9,
0xe9,
0xc6404040,
0xc62f2ce7,
0xe7,
0xc7404040,
0xc73129e6,
0xe6,
0xc8404040,
0xc83327e5,
0xe5,
0xc8404040,
0xc83525e3,
0xe3,
0xc9404040,
0xc93622e2,
0xe2,
0xca404040,
0xca381fe1,
0xe1,
0xcb404040,
0xcb3a1cdf,
0xdf,
0xcc404040,
0xcc3b19de,
0xde,
0xcd404040,
0xcd3c15dc,
0xdc,
0xce404040,
0xce3d12db,
0xdb,
0xcf404040,
0xcf3e0ed9,
0xd9,
0xd0404040,
0xd03f0ad8,
0xd8,
0xd2404040,
0xd24006d6,
0xd6,
0xd3404040,
0xd34002d5,
0xd5,
0xd4404040,
0xd440ffd3,
0xd3,
0xd6404040,
0xd640fbd2,
0xd2,
0xd8404040,
0xd83ff7d0,
0xd0,
0xd9404040,
0xd93ef2cf,
0xcf,
0xdb404040,
0xdb3deecd,
0xcd,
0xdd404040,
0xdd3be9cc,
0xcc,
0xdf404040,
0xdf3ae5cb,
0xcb,
0xe1404040,
0xe137e1ca,
0xca,
0xe3404040,
0xe335ddc8,
0xc8,
0xe5404040,
0xe532d9c7,
0xc7,
0xe8404040,
0xe82ed5c6,
0xc6,
0xea404040,
0xea2bd1c5,
0xc5,
0xed404040,
0xed27cec4,
0xc4,
0xef404040,
0xef22cbc4,
0xc4,
0xf2404040,
0xf21ec8c3,
0xc3,
0xf4404040,
0xf419c6c2,
0xc2,
0xf7404040,
0xf714c4c2,
0xc2,
0xfa404040,
0xfa0ec3c1,
0xc1,
0xfd404040,
0xfd09c2c1,
0xc1,
0xff404040,
0xff03c1c1,
0xc1,
0x1404040,
0x1ffc1c1,
0xc1,
0x4404040,
0x4f9c2c1,
0xc1,
0x7404040,
0x7f3c3c1,
0xc1,
0xa404040,
0xaedc4c2,
0xc2,
0xd404040,
0xde8c6c2,
0xc2,
0x10404040,
0x10e2c9c3,
0xc3,
0x13404040,
0x13ddccc4,
0xc4,
0x16404040,
0x16d8d0c5,
0xc5,
0x19404040,
0x19d4d4c6,
0xc6,
0x1b404040,
0x1bd0d8c7,
0xc7,
0x1e404040,
0x1eccddc9,
0xc9,
0x21404040,
0x21c9e3ca,
0xca,
0x24404040,
0x24c6e9cc,
0xcc,
0x26404040,
0x26c4efce,
0xce,
0x29404040,
0x29c2f5d0,
0xd0,
0x2b404040,
0x2bc1fbd2,
0xd2,
0x2e404040,
0x2ec101d4,
0xd4,
0x30404040,
0x30c107d6,
0xd6,
0x32404040,
0x32c20ed9,
0xd9,
0x34404040,
0x34c414db,
0xdb,
0x36404040,
0x36c71ade,
0xde,
0x37404040,
0x37ca20e1,
0xe1,
0x39404040,
0x39cd26e4,
0xe4,
0x3a404040,
0x3ad12be7,
0xe7,
0x3c404040,
0x3cd630ea,
0xea,
0x3d404040,
0x3ddb34ed,
0xed,
0x3e404040,
0x3ee137f0,
0xf0,
0x3f404040,
0x3fe73af4,
0xf4,
0x3f404040,
0x3fed3df7,
0xf7,
0x40404040,
0x40f43ffa,
0xfa,
0x40404040,
0x40fa40fe,
0xfe,
0x40404040,
0x40004000,
0x0,
0x40404040,
0x40074003,
0x3,
0x40404040,
0x400d3f07,
0x7,
0x3f404040,
0x3f143d0a,
0xa,
0x3f404040,
0x3f1a3a0d,
0xd,
0x3e404040,
0x3e203711,
0x11,
0x3d404040,
0x3d263414,
0x14,
0x3c404040,
0x3c2b3017,
0x17,
0x3a404040,
0x3a302b1a,
0x1a,
0x39404040,
0x3934261d,
0x1d,
0x37404040,
0x37372020,
0x20,
0x36404040,
0x363a1a23,
0x23,
0x34404040,
0x343d1426,
0x26,
0x32404040,
0x323f0e28,
0x28,
0x30404040,
0x3040072b,
0x2b,
0x2e404040,
0x2e40012d,
0x2d,
0x2b404040,
0x2b40fb2f,
0x2f,
0x29404040,
0x293ff531,
0x31,
0x26404040,
0x263def33,
0x33,
0x24404040,
0x243be935,
0x35,
0x21404040,
0x2138e337,
0x37,
0x1e404040,
0x1e35dd38,
0x38,
0x1b404040,
0x1b31d83a,
0x3a,
0x19404040,
0x192dd43b,
0x3b,
0x16404040,
0x1629d03c,
0x3c,
0x13404040,
0x1324cc3d,
0x3d,
0x10404040,
0x101fc93e,
0x3e,
0xd404040,
0xd19c63f,
0x3f,
0xa404040,
0xa14c43f,
0x3f,
0x7404040,
0x70ec340,
0x40,
0x4404040,
0x408c240,
0x40,
0x1404040,
0x102c140,
0x40,
0xff404040,
0xfffec140,
0x40,
0xfd404040,
0xfdf8c240,
0x40,
0xfa404040,
0xfaf3c340,
0x40,
0xf7404040,
0xf7edc43f,
0x3f,
0xf4404040,
0xf4e8c63f,
0x3f,
0xf2404040,
0xf2e3c83e,
0x3e,
0xef404040,
0xefdfcb3d,
0x3d,
0xed404040,
0xeddace3d,
0x3d,
0xea404040,
0xead6d13c,
0x3c,
0xe8404040,
0xe8d3d53b,
0x3b,
0xe5404040,
0xe5cfd93a,
0x3a,
0xe3404040,
0xe3ccdd39,
0x39,
0xe1404040,
0xe1cae137,
0x37,
0xdf404040,
0xdfc7e536,
0x36,
0xdd404040,
0xddc6e935,
0x35,
0xdb404040,
0xdbc4ee34,
0x34,
0xd9404040,
0xd9c3f232,
0x32,
0xd8404040,
0xd8c2f731,
0x31,
0xd6404040,
0xd6c1fb2f,
0x2f,
0xd4404040,
0xd4c1ff2e,
0x2e,
0xd3404040,
0xd3c1022c,
0x2c,
0xd2404040,
0xd2c1062b,
0x2b,
0xd0404040,
0xd0c20a29,
0x29,
0xcf404040,
0xcfc30e28,
0x28,
0xce404040,
0xcec41226,
0x26,
0xcd404040,
0xcdc51525,
0x25,
0xcc404040,
0xccc61923,
0x23,
0xcb404040,
0xcbc71c22,
0x22,
0xca404040,
0xcac91f20,
0x20,
0xc9404040,
0xc9cb221f,
0x1f,
0xc8404040,
0xc8cc251e,
0x1e,
0xc8404040,
0xc8ce271c,
0x1c,
0xc7404040,
0xc7d0291b,
0x1b,
0xc6404040,
0xc6d22c1a,
0x1a,
0xc6404040,
0xc6d42e18,
0x18,
0xc5404040,
0xc5d62f17,
0x17,
0xc5404040,
0xc5d83116,
0x16,
0xc4404040,
0xc4da3315,
0x15,
0xc4404040,
0xc4dc3414,
0x14,
0xc4404040,
0xc4de3512,
0x12,
0xc3404040,
0xc3df3711,
0x11,
0xc3404040,
0xc3e13810,
0x10,
0xc3404040,
0xc3e33810,
0x10,
0xc3404040,
0xc3e4390f,
0xf,
0xc3404040,
0xc3e63a0e,
0xe,
0xc2404040,
0xc2e73b0d,
0xd,
0xc2404040,
0xc2e93b0c,
0xc,
0xc2404040,
0xc2ea3c0c,
0xc,
0xc2404040,
0xc2eb3c0b,
0xb,
0xc2404040,
0xc2ec3d0b,
0xb,
0xc2404040,
0xc2ed3d0a,
0xa,
0xc2404040,
0xc2ee3d0a,
0xa,
0xc2404040,
0xc2ef3d09,
0x9,
0xc2404040,
0xc2ef3e09,
0x9,
0xc2404040,
0xc2f03e09,
0x9,
0xc2404040,
0xc2f03e08,
0x8,
0xc2404040,
0xc2f13e08,
0x8,
0xc2404040,
0xc2f13e08,
0x8,
0xc2404040,
0xc2f13e08,
0x8,
在上述文件截断后对比
keil/include/components/algo/src/steering_vector/cmp_svec_hex_ch5.txt keil/include/components/algo/src/steering_vector/cmp_svec_hex_ch9.txt keil/include/components/algo/src/steering_vector/cmp_svec_hex_square4ant_ch5.txt keil/include/components/algo/src/steering_vector/cmp_svec_hex_square4ant_ch9.txt keil/include/components/app/inc/aoa.h keil/include/components/app/inc/aoa_task.h keil/include/components/app/inc/app.h keil/include/components/app/inc/app_task.h keil/include/components/app/inc/ranging_ccc.h keil/include/components/app/inc/ranging_ccc_task.h keil/include/components/app/inc/ranging_custom.h keil/include/components/app/inc/ranging_custom_task.h keil/include/components/app/inc/ranging_fira.h keil/include/components/app/inc/ranging_fira_task.h keil/include/components/app/inc/ranging_simple.h keil/include/components/app/inc/ranging_simple_task.h keil/include/components/app/inc/ranging_ss_twr.h keil/include/components/app/inc/ranging_ss_twr_task.h keil/include/components/app/inc/uci_tl_task.h keil/include/components/app/inc/ul_tdoa.h keil/include/components/app/inc/ul_tdoa_task.h keil/include/components/app/inc/uwb_audio.h keil/include/components/app/inc/uwb_audio_task.h keil/include/components/app/inc/uwb_data_transfer.h keil/include/components/app/inc/uwb_data_transfer_task.h keil/include/components/app/inc/uwb_radar.h keil/include/components/app/inc/uwb_radar_task.h keil/include/components/app/inc/uwb_test.h keil/include/components/app/inc/uwb_test_task.h keil/include/components/app/inc/uwb_trx.h keil/include/components/app/inc/uwb_trx_task.h keil/include/components/app/src/aoa.c keil/include/components/app/src/aoa_task.c keil/include/components/app/src/app.c keil/include/components/app/src/app_task.c keil/include/components/app/src/ranging_ccc.c keil/include/components/app/src/ranging_ccc_task.c keil/include/components/app/src/ranging_custom.c keil/include/components/app/src/ranging_custom_task.c keil/include/components/app/src/ranging_fira.c keil/include/components/app/src/ranging_fira_task.c keil/include/components/app/src/ranging_simple.c keil/include/components/app/src/ranging_simple_task.c keil/include/components/app/src/ranging_ss_twr.c keil/include/components/app/src/ranging_ss_twr_task.c keil/include/components/app/src/uci_tl_task.c keil/include/components/app/src/ul_tdoa.c keil/include/components/app/src/ul_tdoa_task.c keil/include/components/app/src/uwb_audio.c keil/include/components/app/src/uwb_audio_task.c keil/include/components/app/src/uwb_data_transfer.c keil/include/components/app/src/uwb_data_transfer_task.c keil/include/components/app/src/uwb_radar.c keil/include/components/app/src/uwb_radar_task.c keil/include/components/app/src/uwb_test.c keil/include/components/app/src/uwb_test_task.c keil/include/components/app/src/uwb_trx.c keil/include/components/app/src/uwb_trx_task.c keil/include/components/crc/crc.c keil/include/components/crc/crc.h keil/include/components/libc/libc.c keil/include/components/libc/libc_rom.h keil/include/components/se/inc/T1.h keil/include/components/se/inc/phdriver.h keil/include/components/se/inc/se_api.h keil/include/components/se/inc/se_common.h keil/include/components/se/inc/uart_in_spi.h keil/include/components/se/src/T1.c keil/include/components/se/src/phdriver.c keil/include/components/se/src/se_api.c keil/include/components/se/src/t1_split.c keil/include/components/se/src/tm_main.c keil/include/components/se/src/uart_in_spi.c keil/include/components/uci/inc/uci_tl_comm.h keil/include/components/uci/src/uci_spi_driver.c keil/include/components/uci/src/uci_uart_driver.c keil/include/components/utilities/lzma/7zTypes.h keil/include/components/utilities/lzma/Compiler.h keil/include/components/utilities/lzma/CpuArch.c keil/include/components/utilities/lzma/CpuArch.h keil/include/components/utilities/lzma/LzFind.c keil/include/components/utilities/lzma/LzFind.h keil/include/components/utilities/lzma/LzHash.h keil/include/components/utilities/lzma/LzmaDec.c keil/include/components/utilities/lzma/LzmaDec.h keil/include/components/utilities/lzma/LzmaEnc.c keil/include/components/utilities/lzma/LzmaEnc.h keil/include/components/utilities/lzma/Precomp.h keil/include/components/uwb/inc/lib_ccc.h keil/include/components/uwb/inc/lib_fira.h keil/include/components/uwb/inc/uwb_api.h keil/include/components/uwb/inc/uwb_contention.h keil/include/components/uwb/inc/uwb_data.h keil/include/components/uwb/inc/uwb_fira_message.h keil/include/components/uwb/inc/uwb_hybrid.h keil/include/components/uwb/inc/uwb_link_layer.h keil/include/components/uwb/inc/uwb_twr.h keil/include/components/wsf/include/platform/pal_flash.h keil/include/components/wsf/include/platform/pal_sys.h keil/include/components/wsf/include/platform/pal_types.h keil/include/components/wsf/include/platform/pal_uart.h keil/include/components/wsf/include/wsf_assert.h keil/include/components/wsf/include/wsf_buf.h keil/include/components/wsf/include/wsf_bufio.h keil/include/components/wsf/include/wsf_cs.h keil/include/components/wsf/include/wsf_heap.h keil/include/components/wsf/include/wsf_math.h keil/include/components/wsf/include/wsf_msg.h keil/include/components/wsf/include/wsf_nvm.h keil/include/components/wsf/include/wsf_os.h keil/include/components/wsf/include/wsf_queue.h keil/include/components/wsf/include/wsf_timer.h keil/include/components/wsf/include/wsf_trace.h keil/include/components/wsf/include/wsf_types.h keil/include/components/wsf/sources/platform/pal_flash.c keil/include/components/wsf/sources/platform/pal_sys.c keil/include/components/wsf/sources/platform/pal_uart.c keil/include/components/wsf/sources/port/baremetal/wsf_assert.c keil/include/components/wsf/sources/port/baremetal/wsf_buf.c keil/include/components/wsf/sources/port/baremetal/wsf_bufio.c keil/include/components/wsf/sources/port/baremetal/wsf_heap.c keil/include/components/wsf/sources/port/baremetal/wsf_msg.c keil/include/components/wsf/sources/port/baremetal/wsf_nvm.c keil/include/components/wsf/sources/port/baremetal/wsf_os.c keil/include/components/wsf/sources/port/baremetal/wsf_queue.c keil/include/components/wsf/sources/port/baremetal/wsf_timer.c keil/include/components/wsf/sources/port/baremetal/wsf_trace.c keil/include/devices/MK800X/Include/MK800X.h keil/include/devices/MK800X/Include/system_MK800X.h keil/include/devices/MK800X/Source/ARM/MK800X_ac6.sct keil/include/devices/MK800X/Source/ARM/MK800X_ac6_copy.sct keil/include/devices/MK800X/Source/GCC/gcc_arm.ld keil/include/devices/MK800X/Source/IAR/MK800X.icf keil/include/devices/MK800X/Source/startup_MK800X.c keil/include/devices/MK800X/Source/system_MK800X.c keil/include/drivers/Usart.c keil/include/drivers/Usart.h keil/include/drivers/Usart1.c keil/include/drivers/Usart1.h keil/include/drivers/aes.c keil/include/drivers/aes.h keil/include/drivers/global_param.c keil/include/drivers/global_param.h keil/include/drivers/menu.c keil/include/drivers/menu.h keil/include/drivers/mk_acmp.c keil/include/drivers/mk_acmp.h keil/include/drivers/mk_adc.c keil/include/drivers/mk_adc.h keil/include/drivers/mk_aes.c keil/include/drivers/mk_aes.h keil/include/drivers/mk_calib.c keil/include/drivers/mk_calib.h keil/include/drivers/mk_clock.c keil/include/drivers/mk_clock.h keil/include/drivers/mk_common.h keil/include/drivers/mk_dma.c keil/include/drivers/mk_dma.h keil/include/drivers/mk_dual_timer.c keil/include/drivers/mk_dual_timer.h keil/include/drivers/mk_efuse.c keil/include/drivers/mk_efuse.h keil/include/drivers/mk_flash.c keil/include/drivers/mk_flash.h keil/include/drivers/mk_gpio.c keil/include/drivers/mk_gpio.h keil/include/drivers/mk_i2c.c keil/include/drivers/mk_i2c.h keil/include/drivers/mk_io.c keil/include/drivers/mk_io.h keil/include/drivers/mk_lsp.h keil/include/drivers/mk_mac.h keil/include/drivers/mk_misc.c keil/include/drivers/mk_misc.h keil/include/drivers/mk_phy.h keil/include/drivers/mk_power.c keil/include/drivers/mk_power.h keil/include/drivers/mk_pwm.c keil/include/drivers/mk_pwm.h keil/include/drivers/mk_radar.c keil/include/drivers/mk_radar.h keil/include/drivers/mk_reset.c keil/include/drivers/mk_reset.h keil/include/drivers/mk_rtc.c keil/include/drivers/mk_rtc.h keil/include/drivers/mk_sbl.c keil/include/drivers/mk_sbl.h keil/include/drivers/mk_sleep_timer.c keil/include/drivers/mk_sleep_timer.h keil/include/drivers/mk_spi.c keil/include/drivers/mk_spi.h keil/include/drivers/mk_timer.c keil/include/drivers/mk_timer.h keil/include/drivers/mk_trace.c keil/include/drivers/mk_trace.h keil/include/drivers/mk_trng.c keil/include/drivers/mk_trng.h keil/include/drivers/mk_uart.c keil/include/drivers/mk_uart.h keil/include/drivers/mk_uwb.c keil/include/drivers/mk_uwb.h keil/include/drivers/mk_wdt.c keil/include/drivers/mk_wdt.h keil/include/drivers/serial_at_cmd_app.c keil/include/drivers/serial_at_cmd_app.h keil/include/drivers/ymodem.c keil/include/drivers/ymodem.h keil/include/main/main.c keil/include/src/uwb_examples/uwb_simple_example/simple_ds_twr_init/simple_ds_twr_init.c keil/include/src/uwb_examples/uwb_simple_example/simple_ds_twr_init/simple_ds_twr_init_yuan.c keil/include/src/uwb_examples/uwb_simple_example/simple_ds_twr_init_sts/simple_ds_twr_init_sts.c keil/include/src/uwb_examples/uwb_simple_example/simple_ds_twr_init_sts/simple_ds_twr_init_sts_yuan.c keil/include/src/uwb_examples/uwb_simple_example/simple_ds_twr_resp/simple_ds_twr_resp.c keil/include/src/uwb_examples/uwb_simple_example/simple_ds_twr_resp/simple_ds_twr_resp_yuan.c keil/include/src/uwb_examples/uwb_simple_example/simple_ds_twr_resp_sts/simple_ds_twr_resp_sts.c keil/include/src/uwb_examples/uwb_simple_example/simple_ds_twr_resp_sts/simple_ds_twr_resp_sts_yuan.c keil/include/src/uwb_examples/uwb_simple_example/simple_rx/simple_rx - yuan.c keil/include/src/uwb_examples/uwb_simple_example/simple_rx/simple_rx.c keil/include/src/uwb_examples/uwb_simple_example/simple_tx/simple_tx.c keil/include/src/uwb_examples/uwb_simple_example/simple_tx/simple_tx_yuan.c keil/simple_ss_twr_dw_init.c keil/simple_ss_twr_dw_resp.c keil/uwb_simple_example.uvguix.xookk keil/uwb_simple_example.uvmpw keil/uwb_simple_example.uvmpw.uvgui.xookk keil/uwb_simple_example.uvoptx keil/uwb_simple_example.uvprojx keil/新建 文本文档.txt pin_config.c user_config.h