diff --git a/README.md b/README.md index 3ed2592..6070274 100644 --- a/README.md +++ b/README.md @@ -74,3 +74,6 @@ - 数据长度错误回包 - `B5 F4 03 65 72 72 40`, 有效数据为 `err` +### 3. 读取数据时间间隔 + +- 推荐数据时间间隔至少为200ms diff --git a/inc/rs485.h b/inc/rs485.h index b24f233..33ce875 100644 --- a/inc/rs485.h +++ b/inc/rs485.h @@ -13,6 +13,7 @@ #include #include #include +#include "tmp112.h" /******************************************************************************/ diff --git a/src/main.c b/src/main.c index 6d9db53..814f3b7 100644 --- a/src/main.c +++ b/src/main.c @@ -18,6 +18,21 @@ uint32_t g_temperature_uint32; uint32_t g_eddy_current_value_uint32; +void watchdog_init(void) { + /* Enable the LSI clock */ + rcu_osci_on(RCU_IRC8M); + rcu_osci_stab_wait(RCU_IRC8M); + + /* Enable the FWDGT clock */ + rcu_periph_clock_enable(RCU_WWDGT); + + /* Configure FWDGT counter clock: 40KHz(IRC40K) / 256 = 0.15625 KHz */ + fwdgt_config(156, FWDGT_PSC_DIV256); // Set timeout to 4 seconds (625 / 0.15625 KHz) + + /* Enable FWDGT */ + fwdgt_enable(); +} + /*! \brief main function \param[in] none @@ -40,13 +55,16 @@ int main(void) { /* configure LDC1612 */ ldc1612_single_ch0_config(); + watchdog_init(); + while (1) { - delay_ms(100); + delay_ms(99); g_eddy_current_value_uint32 = 0; g_temperature_uint32 = 0; g_eddy_current_value_uint32 = ldc1612_get_raw_channel_result(CHANNEL_0); - g_temperature_uint32 = tmp112a_get_raw_channel_result(); + // g_temperature_uint32 = tmp112a_get_raw_channel_result(); // printf("1"); + fwdgt_counter_reload(); } } diff --git a/src/rs485.c b/src/rs485.c index b578061..1182126 100644 --- a/src/rs485.c +++ b/src/rs485.c @@ -135,10 +135,12 @@ void eddy_current_value_report(void) { } void tempture_value_report(void) { - package_data[0] = (g_temperature_uint32 >> 24) & 0xFF; - package_data[1] = (g_temperature_uint32 >> 16) & 0xFF; - package_data[2] = (g_temperature_uint32 >> 8) & 0xFF; - package_data[3] = g_temperature_uint32 & 0xFF; + uint32_t temperature_uint32 = tmp112a_get_raw_channel_result(); + + package_data[0] = (temperature_uint32 >> 24) & 0xFF; + package_data[1] = (temperature_uint32 >> 16) & 0xFF; + package_data[2] = (temperature_uint32 >> 8) & 0xFF; + package_data[3] = temperature_uint32 & 0xFF; uint8_t combined_data[7]; memcpy(combined_data, package_header, 3);