diff --git a/CMakeLists.txt b/CMakeLists.txt index e6d1c4a..1b14588 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -155,7 +155,7 @@ link_directories( # A. 头文件管理:全自动模式,扫描 User_Code 下的所有头文件。 # ------------------------------------------------------------------------------ message(NOTICE ">> [Searching All Header] 正在全自动递归扫描 User_Code 下所有头文件路径...") -file(GLOB_RECURSE USER_HEADERS "${CMAKE_SOURCE_DIR}/User_Code/*.h" "${CMAKE_SOURCE_DIR}/User_Code/*.hpp") +file(GLOB_RECURSE USER_HEADERS CONFIGURE_DEPENDS "${CMAKE_SOURCE_DIR}/User_Code/*.h" "${CMAKE_SOURCE_DIR}/User_Code/*.hpp") foreach (header ${USER_HEADERS}) get_filename_component(dir ${header} DIRECTORY) # 获取头文件所在目录 @@ -174,7 +174,7 @@ message(NOTICE ">> [INFO] 正在全自动递归扫描 User_Code/application下 # 1. 添加通用代码 (BSP & Module & Application 通用框架) # 包含 bsp, module 以及 application 下的通用组件 -file(GLOB_RECURSE COMMON_SOURCES +file(GLOB_RECURSE COMMON_SOURCES CONFIGURE_DEPENDS "${PROJECT_SOURCE_DIR}/User_Code/bsp/*.c" "${PROJECT_SOURCE_DIR}/User_Code/bsp/*.cpp" "${PROJECT_SOURCE_DIR}/User_Code/module/*.c" @@ -269,7 +269,7 @@ endif() if(ACTIVE_APP_DIR) if(EXISTS "${ACTIVE_APP_DIR}") # 添加该兵种目录下的所有源码 - file(GLOB_RECURSE APP_SOURCES "${ACTIVE_APP_DIR}/*.c" "${ACTIVE_APP_DIR}/*.cpp") + file(GLOB_RECURSE APP_SOURCES CONFIGURE_DEPENDS "${ACTIVE_APP_DIR}/*.c" "${ACTIVE_APP_DIR}/*.cpp") # --- 新增:统计文件数量 --- list(LENGTH APP_SOURCES APP_SOURCES_COUNT) @@ -294,4 +294,4 @@ target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE # RM_REFEREE -) \ No newline at end of file +) diff --git a/Core/Src/freertos.c b/Core/Src/freertos.c index 6857484..75f702d 100644 --- a/Core/Src/freertos.c +++ b/Core/Src/freertos.c @@ -28,6 +28,7 @@ #include "ws2812status.h" #include "ins_task.h" #include "buzzer.h" +#include "tft.h" // #include "remoteTask.h" // // #include "bsp_dwt.h" @@ -288,8 +289,14 @@ __weak void StartDefaultTask(void *argument) MX_USB_DEVICE_Init(); /* USER CODE BEGIN StartDefaultTask */ /* Infinite loop */ + TFT_Init(); + static uint32_t tft_refresh_tick = 0U; for (;;) { + if ((tft_refresh_tick++ % 100U) == 0U) + { + TFT_ShowStatus(BMI088.Temperature, RobotMode); + } osDelay(1); } /* USER CODE END StartDefaultTask */ diff --git a/Core/Src/spi.c b/Core/Src/spi.c index 26204ec..2a81848 100644 --- a/Core/Src/spi.c +++ b/Core/Src/spi.c @@ -46,11 +46,11 @@ void MX_SPI1_Init(void) hspi1.Instance = SPI1; hspi1.Init.Mode = SPI_MODE_MASTER; hspi1.Init.Direction = SPI_DIRECTION_2LINES; - hspi1.Init.DataSize = SPI_DATASIZE_16BIT; - hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi1.Init.DataSize = SPI_DATASIZE_8BIT; + hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH; hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; hspi1.Init.NSS = SPI_NSS_SOFT; - hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8; hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; hspi1.Init.TIMode = SPI_TIMODE_DISABLE; hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; @@ -210,8 +210,8 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle) hdma_spi1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; hdma_spi1_rx.Init.PeriphInc = DMA_PINC_DISABLE; hdma_spi1_rx.Init.MemInc = DMA_MINC_ENABLE; - hdma_spi1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; - hdma_spi1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; + hdma_spi1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; + hdma_spi1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; hdma_spi1_rx.Init.Mode = DMA_NORMAL; hdma_spi1_rx.Init.Priority = DMA_PRIORITY_VERY_HIGH; hdma_spi1_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE; @@ -228,8 +228,8 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle) hdma_spi1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; hdma_spi1_tx.Init.PeriphInc = DMA_PINC_DISABLE; hdma_spi1_tx.Init.MemInc = DMA_MINC_ENABLE; - hdma_spi1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; - hdma_spi1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; + hdma_spi1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; + hdma_spi1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; hdma_spi1_tx.Init.Mode = DMA_NORMAL; hdma_spi1_tx.Init.Priority = DMA_PRIORITY_VERY_HIGH; hdma_spi1_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE; @@ -350,11 +350,9 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle) __HAL_RCC_GPIOA_CLK_ENABLE(); /**SPI6 GPIO Configuration - PA5 ------> SPI6_SCK - PA6 ------> SPI6_MISO PA7 ------> SPI6_MOSI */ - GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; + GPIO_InitStruct.Pin = GPIO_PIN_7; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; @@ -362,6 +360,8 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle) HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* USER CODE BEGIN SPI6_MspInit 1 */ + /* WS2812 uses only PA7 MOSI; PA5 is LCD KEY on DM-MC-Board02. */ + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6); /* USER CODE END SPI6_MspInit 1 */ } diff --git a/TronOneH7_Scaffold.ioc b/TronOneH7_Scaffold.ioc index 6420c7a..fb735ed 100644 --- a/TronOneH7_Scaffold.ioc +++ b/TronOneH7_Scaffold.ioc @@ -82,10 +82,10 @@ Dma.SPI1_RX.11.Direction=DMA_PERIPH_TO_MEMORY Dma.SPI1_RX.11.EventEnable=DISABLE Dma.SPI1_RX.11.FIFOMode=DMA_FIFOMODE_DISABLE Dma.SPI1_RX.11.Instance=DMA2_Stream7 -Dma.SPI1_RX.11.MemDataAlignment=DMA_MDATAALIGN_HALFWORD +Dma.SPI1_RX.11.MemDataAlignment=DMA_MDATAALIGN_BYTE Dma.SPI1_RX.11.MemInc=DMA_MINC_ENABLE Dma.SPI1_RX.11.Mode=DMA_NORMAL -Dma.SPI1_RX.11.PeriphDataAlignment=DMA_PDATAALIGN_HALFWORD +Dma.SPI1_RX.11.PeriphDataAlignment=DMA_PDATAALIGN_BYTE Dma.SPI1_RX.11.PeriphInc=DMA_PINC_DISABLE Dma.SPI1_RX.11.Polarity=HAL_DMAMUX_REQ_GEN_RISING Dma.SPI1_RX.11.Priority=DMA_PRIORITY_VERY_HIGH @@ -100,10 +100,10 @@ Dma.SPI1_TX.12.Direction=DMA_MEMORY_TO_PERIPH Dma.SPI1_TX.12.EventEnable=DISABLE Dma.SPI1_TX.12.FIFOMode=DMA_FIFOMODE_DISABLE Dma.SPI1_TX.12.Instance=DMA1_Stream3 -Dma.SPI1_TX.12.MemDataAlignment=DMA_MDATAALIGN_HALFWORD +Dma.SPI1_TX.12.MemDataAlignment=DMA_MDATAALIGN_BYTE Dma.SPI1_TX.12.MemInc=DMA_MINC_ENABLE Dma.SPI1_TX.12.Mode=DMA_NORMAL -Dma.SPI1_TX.12.PeriphDataAlignment=DMA_PDATAALIGN_HALFWORD +Dma.SPI1_TX.12.PeriphDataAlignment=DMA_PDATAALIGN_BYTE Dma.SPI1_TX.12.PeriphInc=DMA_PINC_DISABLE Dma.SPI1_TX.12.Polarity=HAL_DMAMUX_REQ_GEN_RISING Dma.SPI1_TX.12.Priority=DMA_PRIORITY_VERY_HIGH @@ -624,10 +624,8 @@ PA2.GPIO_Speed=GPIO_SPEED_FREQ_HIGH PA2.Locked=true PA2.PinState=GPIO_PIN_SET PA2.Signal=GPIO_Output -PA5.Mode=TX_Only_Simplex_Unidirect_Master -PA5.Signal=SPI6_SCK -PA6.Mode=Full_Duplex_Master -PA6.Signal=SPI6_MISO +PA5.Signal=ADCx_INP19 +PA6.Signal=GPIO_Input PA7.Mode=TX_Only_Simplex_Unidirect_Master PA7.Signal=SPI6_MOSI PA8.Mode=Clock-out-1 @@ -903,6 +901,8 @@ RCC.VCOInput2Freq_Value=12000000 RCC.VCOInput3Freq_Value=750000 SH.ADCx_INP4.0=ADC1_INP4,IN4-Single-Ended SH.ADCx_INP4.ConfNb=1 +SH.ADCx_INP19.0=ADC1_INP19,IN19-Single-Ended +SH.ADCx_INP19.ConfNb=1 SH.GPXTI10.0=GPIO_EXTI10 SH.GPXTI10.ConfNb=1 SH.GPXTI12.0=GPIO_EXTI12 @@ -914,11 +914,12 @@ SH.S_TIM3_CH4.ConfNb=1 SH.SharedStack_PC12.0=SPI3_MOSI SH.SharedStack_PC12.1=UART5_TX,Asynchronous SH.SharedStack_PC12.ConfNb=2 -SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_16 -SPI1.CalculateBaudRate=7.5 MBits/s -SPI1.DataSize=SPI_DATASIZE_16BIT +SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_8 +SPI1.CLKPolarity=SPI_POLARITY_HIGH +SPI1.CalculateBaudRate=15.0 MBits/s +SPI1.DataSize=SPI_DATASIZE_8BIT SPI1.Direction=SPI_DIRECTION_2LINES -SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,BaudRatePrescaler +SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,BaudRatePrescaler,CLKPolarity SPI1.Mode=SPI_MODE_MASTER SPI1.VirtualType=VM_MASTER SPI2.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_32 diff --git a/User_Code/module/periph/ws2812/ws2812.c b/User_Code/module/periph/ws2812/ws2812.c index a04b4c9..69d032e 100644 --- a/User_Code/module/periph/ws2812/ws2812.c +++ b/User_Code/module/periph/ws2812/ws2812.c @@ -16,6 +16,9 @@ #include "ws2812.h" +#define WS2812_SPI_TIMEOUT 2U +#define WS2812_RESET_BYTES 100U + #define WS2812_LowLevel 0xC0 // 0码 #define WS2812_HighLevel 0xF0 // 1码 @@ -29,17 +32,22 @@ void WS2812_Ctrl(uint8_t r, uint8_t g, uint8_t b) { uint8_t txbuf[24]; uint8_t res = 0; - for (auto i = 0; i < 8; i++) + for (uint8_t i = 0; i < 8U; i++) { txbuf[7 - i] = (((g >> i) & 0x01) ? WS2812_HighLevel : WS2812_LowLevel) >> 1; txbuf[15 - i] = (((r >> i) & 0x01) ? WS2812_HighLevel : WS2812_LowLevel) >> 1; txbuf[23 - i] = (((b >> i) & 0x01) ? WS2812_HighLevel : WS2812_LowLevel) >> 1; } - HAL_SPI_Transmit(&WS2812_SPI_UNIT, &res, 0, 0xFFFF); - while (WS2812_SPI_UNIT.State != HAL_SPI_STATE_READY); - HAL_SPI_Transmit(&WS2812_SPI_UNIT, txbuf, 24, 0xFFFF); - for (auto i = 0; i < 100; i++) + if (HAL_SPI_Transmit(&WS2812_SPI_UNIT, txbuf, sizeof(txbuf), WS2812_SPI_TIMEOUT) != HAL_OK) { - HAL_SPI_Transmit(&WS2812_SPI_UNIT, &res, 1, 0xFFFF); + return; + } + + for (uint8_t i = 0; i < WS2812_RESET_BYTES; i++) + { + if (HAL_SPI_Transmit(&WS2812_SPI_UNIT, &res, 1U, WS2812_SPI_TIMEOUT) != HAL_OK) + { + return; + } } } diff --git a/ozonedeb/windebnewestux.jdebug.user b/ozonedeb/windebnewestux.jdebug.user index 6899143..221cfda 100644 --- a/ozonedeb/windebnewestux.jdebug.user +++ b/ozonedeb/windebnewestux.jdebug.user @@ -1,35 +1,45 @@ +Breakpoint=D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/application/indicator_app/ws2812status.c:38, State=BP_STATE_ON +Breakpoint=D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/module/periph/ws2812/ws2812.c:40, State=BP_STATE_ON +Breakpoint=D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/module/periph/ws2812/ws2812.c:43, State=BP_STATE_ON +Breakpoint=D:/RM/Elec Control/TronOneH7_Scaffold/Core/Src/main.c:101, State=BP_STATE_ON +Breakpoint=D:/RM/Elec Control/TronOneH7_Scaffold/Core/Src/main.c:140, State=BP_STATE_ON GraphedExpression="(rc_ctrl[0]).ch3", DisplayFormat=DISPLAY_FORMAT_DEC, Color=#a00909 -OpenDocument="main.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Core/Src/main.c", Line=64 +OpenDocument="ws2812.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/module/periph/ws2812/ws2812.c", Line=14 +OpenDocument="ws2812status.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/application/indicator_app/ws2812status.c", Line=29 +OpenDocument="core_cm7.h", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Drivers/CMSIS/Include/core_cm7.h", Line=2330 +OpenDocument="stm32h7xx_hal_spi.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_spi.c", Line=961 +OpenDocument="stm32h7xx_hal.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c", Line=330 +OpenDocument="main.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Core/Src/main.c", Line=124 OpenToolbar="Debug", Floating=0, x=0, y=0 OpenToolbar="Breakpoints", Floating=0, x=1, y=0 OpenWindow="Call Stack", DockArea=RIGHT, x=0, y=0, w=681, h=226, TabPos=0, TopOfStack=1, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 OpenWindow="Registers 1", DockArea=BOTTOM, x=1, y=0, w=361, h=181, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, FilteredItems=[], RefreshRate=1 OpenWindow="Source Files", DockArea=LEFT, x=0, y=0, w=663, h=189, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 OpenWindow="Disassembly", DockArea=BOTTOM, x=2, y=0, w=632, h=181, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 -OpenWindow="Break & Tracepoints", DockArea=LEFT, x=0, y=1, w=663, h=181, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, VectorCatchIndexMask=254 +OpenWindow="Break & Tracepoints", DockArea=LEFT, x=0, y=1, w=663, h=183, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, VectorCatchIndexMask=254 OpenWindow="Memory 1", DockArea=BOTTOM, x=3, y=0, w=462, h=181, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, EditorAddress=0x2000B98C OpenWindow="Global Data", DockArea=RIGHT, x=0, y=2, w=681, h=260, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 -OpenWindow="Watched Data 1", DockArea=LEFT, x=0, y=2, w=663, h=201, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 +OpenWindow="Watched Data 1", DockArea=LEFT, x=0, y=2, w=663, h=199, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 OpenWindow="Functions", DockArea=LEFT, x=0, y=3, w=663, h=168, TabPos=1, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 OpenWindow="Call Graph", DockArea=LEFT, x=0, y=3, w=663, h=168, TabPos=2, TopOfStack=1, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 OpenWindow="Data Sampling", DockArea=BOTTOM, x=0, y=0, w=1102, h=181, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, VisibleTab=0, UniformSampleSpacing=0 OpenWindow="Timeline", DockArea=RIGHT, x=0, y=1, w=681, h=254, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=1, DataPaneShown=1, PowerPaneShown=0, CodePaneShown=0, PinCursor="Cursor Movable", TimePerDiv="1 s / Div", TimeStampFormat="Time", DataGraphDrawAsPoints=0, DataGraphLegendShown=1, DataGraphUniformSampleSpacing=0, DataGraphLegendPosition="0;0", PowerGraphDrawAsPoints=0, PowerGraphLegendShown=0, PowerGraphAvgFilterTime=Off, PowerGraphAvgFilterLen=Off, PowerGraphUniformSampleSpacing=0, PowerGraphLegendPosition="484;-19", CodeGraphLegendShown=0, CodeGraphLegendPosition="498;0" OpenWindow="Console", DockArea=LEFT, x=0, y=3, w=663, h=168, TabPos=0, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 OpenWindow="FreeRTOS", DockArea=RIGHT, x=0, y=0, w=681, h=226, TabPos=1, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, Showing="Task List" -TableHeader="Call Graph", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Stack Total";"Stack Local";"Code Total";"Code Local";"Depth";"Called From"], ColWidths=[384;100;100;100;100;100;102] TableHeader="Task List", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Run Count";"Priority";"Status";"Timeout";"Stack Info (Free / Size)";"ID";"Mutex Count";"Notified Value";"Notify State"], ColWidths=[110;110;110;110;110;110;110;110;110;110] TableHeader="Functions", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Address";"Size";"#Insts";"Source"], ColWidths=[1164;100;100;100;100] TableHeader="Global Data", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Value";"Location";"Size";"Type";"Scope"], ColWidths=[222;130;100;54;95;427] TableHeader="Vector Catches", SortCol="None", SortOrder="ASCENDING", VisibleCols=["";"Vector Catch";"Description"], ColWidths=[50;300;500] TableHeader="Break & Tracepoints", SortCol="None", SortOrder="ASCENDING", VisibleCols=["";"Type";"Location";"Extras"], ColWidths=[100;100;142;321] TableHeader="Source Files", SortCol="File", SortOrder="ASCENDING", VisibleCols=["File";"Status";"Size";"#Insts";"Path"], ColWidths=[229;100;100;100;917] -TableHeader="Data Sampling Table", SortCol="None", SortOrder="ASCENDING", VisibleCols=["Index";"Time";" (rc_ctrl[0]).ch3"], ColWidths=[100;100;100] +TableHeader="Data Sampling Table", SortCol="Index", SortOrder="ASCENDING", VisibleCols=["Index";"Time"], ColWidths=[100;100] TableHeader="Data Sampling Setup", SortCol="Value", SortOrder="ASCENDING", VisibleCols=["Expression";"Type";"Value";"Min";"Max";"Average";"# Changes";"Min. Change";"Max. Change"], ColWidths=[320;100;100;100;100;100;100;102;102] TableHeader="Power Sampling", SortCol="Index", SortOrder="ASCENDING", VisibleCols=["Index";"Time";"Ch 0"], ColWidths=[100;100;100] TableHeader="Registers 1", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Value";"Description"], ColWidths=[100;105;259] TableHeader="Watched Data 1", SortCol="Expression", SortOrder="ASCENDING", VisibleCols=["Expression";"Value";"Type";"Location";"Refresh"], ColWidths=[171;101;162;112;117] TableHeader="RegisterSelectionDialog", SortCol="None", SortOrder="ASCENDING", VisibleCols=[], ColWidths=[] +TableHeader="Call Graph", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Stack Total";"Stack Local";"Code Total";"Code Local";"Depth";"Called From"], ColWidths=[384;100;100;100;100;100;102] TableHeader="Call Stack", SortCol="Function", SortOrder="ASCENDING", VisibleCols=["Function";"Stack Frame";"Source";"PC";"Return Address";"Stack Used"], ColWidths=[110;126;190;100;190;100] TableHeader="TargetExceptionDialog", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Value";"Address";"Description"], ColWidths=[27;27;27;32] WatchedExpression="rc_ctrl", RefreshRate=1, Window=Watched Data 1 \ No newline at end of file