当前位置: 首页 > news >正文

MAX31865模块和PT100实现温度测量使用配置笔记教程

0、前言

        最初接触这个MAX31865模块,还是研究生同学请教我一个问题,他跟我说这个PT100、PT1000温度传感器模块,无论怎么调,都弄不出来,网上的工程代码找了一个又一个,就是不成功。

        然后简单网上了解了一下后,发现没啥难的啊,不就是一个SPI协议写一写指令,通信驱动一下就可以用了吗?

        必须搞起来,然而打脸来的很快很快,我拿到同学给的几个模块后,我无论怎么写都没有成功,一度开始自我怀疑自己代码是不是有Bug,对写的代码反复反复的检查了好几回,没有发现任何问题啊,到底为什么???要是弄不出来,那不是很尴尬,让我的能力被严重的质疑?

        修改代码解决不了问题后,我开始怀疑这批传感器模块有问题,因此用示波器和逻辑分析仪对SPI的波形进行解析,都只有发给模块的信号,但是没有返回数据波形。

        换了一个厂家的模块后,果然,是店家的硬件产品有质量问题,换一个店家模块后,原来一样的程序代码可以正常跑了。

        因为一个模块质量问题,白白emo了好几天,必须记录一下,记住这沉重的经历,提醒今后在项目研发中,同样关注硬件设备是否正常?

1、什么是MAX31865

        对于温度模块,在接触单片机开发的时候,或多或少都是有了解到的,比如大多数供学习用的开发板就会集成DS18B20这个温湿度模块,还有DH11。

        但对于MAX31865这个模块,如果不是特殊的业务项目场景需要,可能就会接触的比较少了。因为前面的DS18B20和DH11已经可以满足绝大多数的普通单片机学习使用了。

        MAX31865也是一个用于测温的模块,通常配合PT100、PT1000一起使用,非常好的一个特性就是防水,可测量的温度范围值比其它模块的更大。

        用厂家的话来说就是,MAX31865是一款易于使用的电阻-数字转换器,针对铂电阻温度检测器(RTD)进行了优化。MAX31865这个传感器模块目前已经广泛应用在工业设备,医疗设备,和仪器仪表中

        关于MAX31865这个传感器芯片的介绍,在网上已经有很多了,因此在这里就不过度描述。

2、MAX31865资料手册阅读

        在帮助同学或者网友解决问题时,和他们沟通交流得知,很多处于起步的阶段的同学,是还不会阅读资料手册,或者说,看到资料手册,不知道应该怎么阅读,根本就是一个无从下手的状态。因此在这个部分,主要是手把手的带领阅读资料手册。

        在拿到一个芯片资料手册时,我们需要明白,产商给的技术手册,里面内容是非常多的,主要目的是为了面向的不同的群体,如电子工程师,嵌入式软件工程师、技术支持工程师等。因此,不同工作群体的关注点的内容是不一样的。我们需要根据实际需要进行针对性的快速阅读,本文主要是面向编写程序代码软件实现对MAX31865这个模块使用,因此更多需要关注的就是逻辑时序图、寄存器指令地址和数据格式解析转换等内容。

(1)、逻辑时序图阅读

①、时序图电气特性注释表

        一般芯片手册的时序图前后,都会有一个这样的表格,说明了时序图中各个缩写的含义及每个数据的时序范围信息,供开发者在阅读逻辑时序图时不会云里雾里,能帮助开发者更好的阅读理解。

②、SPI读取数据传输

        在下面的数据读取时序图中,SPI的片选引脚CS拉低电平,表示选中了这个SPI设备芯片。在完成数据信号传输后,CS引脚拉高。

        时钟信号SCLK则在CS拉低后,开始产生改变高低电平,产生上升沿和下降沿,供SDI和SDO进行数据传输。

        SDI则是根据信号SCLK的上升沿和下降沿的时间范围内,拉低、拉高SDI引脚,从而达到,发送0、1信号的目的。需要注意的是,SDI的时序图部分,有两条信号线,这表示的是,这个引脚,可以有两种情况,可以低电平开始,或者是以高电平开始。

        SDO最开始的一段WRITE ADDRESS BYTE时间内是处于中间位置的,这表示的是,在这一时刻,SDO不需要进行操作,状态可以任意。在SDO的READ DATA BYTE这个时间范围,则是利用SCLK上升沿和下降沿进行接收高低电平数据。

        除了对这些引脚的高低电平状态理解外,还需要留意时间间隔,必须严格遵守厂家的时间间隔要求,不然编写的程序代码可能不能正确的操作芯片。

③、SPI写数据传输

        SPI写数据传输的逻辑时序图解析理解方法和SPI读取数据传输类似,这里不过多阐述。

(2)、寄存器地址

        在MAX31865中,有8个读寄存器地址5个写寄存器地址。分别是配置寄存器、RTD数据,故障阈值、错误状态信息寄存器对应的地址,具体描述,见下图所示。在后续的MAX31865的驱动及正常的温度解析代码中,只需要对这些寄存器地址的写入或读取数据,即可完成正常的测温功能。

(3)、温度数据转换

        根据MAX31865官方技术文档的内容可知,对温度解析,可以采取计算法直接将温度进行解析计算,也可以采用查表的方式,如果采用查表法,则需要将MAX31865提供的表格也放到程序代码中。

        使用PT100 RTD、400Ω高精度低漂移基准电阻的典型情况下,PT100、400Ω RREF的温度示例。

3、MAX31865通信代码示例

(1)、max31865.h

#ifndef __MAX31865_H
#define __MAX31865_H#include "stm32f4xx.h" 
#include <stdio.h>
#include "delay.h"
#include "sys.h"#define MAX31865_SPI_CS           PCout(13)#define MAX31865_SPIx             SPI1
#define MAX31865_CS_Port          GPIOC
#define MAX31865_CS_Pin           GPIO_Pin_13
#define MAX31865_RDY_Port         GPIOC
#define MAX31865_RDY_Pin          GPIO_Pin_10#define RREF                  (400) 
//PT100分度表里的最低温度
#define RTD_TABLE_TEMP_MIN    -200
//PT100分度表里的最高温度
#define RTD_TABLE_TEMP_MAX    650void MAX31865_GPIO_Init(void);
void MAX31865_SB_Write(uint8_t addr, uint8_t wdata);
uint8_t MAX31865_SB_Read(uint8_t addr);void MAX31865_Init();
uint16_t MAX31865_Find_Index (double Rt);
double MAX31865_Conver_Temperature(double Rt);
float MAX31865_Get_Temperature(void);#endif

(2)、max31865.c

#include "max31865.h"
#include "index.h"/*** @brief  MAX31865 GPIO初始化* @param  None* @retval None*/
void MAX31865_GPIO_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;SPI_InitTypeDef SPI_InitStructure;/* 1. 使能 GPIO 和 SPI1 时钟 */RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);/* 2. 配置 SCK (PA5), MISO (PB4), MOSI (PB5) 为复用推挽输出 */// PA5 - SCKGPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;GPIO_Init(GPIOA, &GPIO_InitStructure);// PB4 - MISOGPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;GPIO_Init(GPIOB, &GPIO_InitStructure);// PB5 - MOSIGPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;GPIO_Init(GPIOB, &GPIO_InitStructure);// 设置引脚复用为 SPI1GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_SPI1);   // PA5 -> SPI1_SCKGPIO_PinAFConfig(GPIOB, GPIO_PinSource4, GPIO_AF_SPI1);   // PB4 -> SPI1_MISOGPIO_PinAFConfig(GPIOB, GPIO_PinSource5, GPIO_AF_SPI1);   // PB5 -> SPI1_MOSI/* 3. 配置 CS(片选)引脚 PC13 */GPIO_InitStructure.GPIO_Pin = MAX31865_CS_Pin;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;GPIO_Init(MAX31865_CS_Port, &GPIO_InitStructure);GPIO_SetBits(MAX31865_CS_Port, MAX31865_CS_Pin);  // 默认高电平,不选中/* 4. 配置 RDY(就绪信号)引脚 PC10 */GPIO_InitStructure.GPIO_Pin = MAX31865_RDY_Pin;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;GPIO_Init(MAX31865_RDY_Port, &GPIO_InitStructure);/* 5. 复位 SPI1(可选) */RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1, ENABLE);RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1, DISABLE);/* 6. 配置 SPI1 参数 */SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; // 全双工模式SPI_InitStructure.SPI_Mode = SPI_Mode_Master;                       // 主机模式SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;                   // 8位数据长度SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;                         // CPOL = 1(空闲为高)SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;                        // CPHA = 1(第二个边沿采样)SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;                           // 软件控制NSSSPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_128;// 分频系数128,约 84/128 ≈ 0.656 MHzSPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;                  // MSB在前SPI_InitStructure.SPI_CRCPolynomial = 7;                            // CRC多项式(不启用)SPI_Init(SPI1, &SPI_InitStructure);/* 7. 启动 SPI1 */SPI_Cmd(SPI1, ENABLE);
}/*** @brief  向 MAX31865 寄存器写入一个字节* @param  addr: 寄存器地址* @param  wdata: 要写入的数据* @retval None*/
void MAX31865_SB_Write(uint8_t addr, uint8_t wdata)
{uint8_t Tx_Data[2];Tx_Data[0] = addr;Tx_Data[1] = wdata;MAX31865_SPI_CS = 0;// 发送第一个字节(地址)while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);SPI_I2S_SendData(SPI1, addr);// 等待传输完成while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);// 发送第二个字节(数据)SPI_I2S_SendData(SPI1, wdata);// 等待最后一个字节发送完成while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY) != RESET);MAX31865_SPI_CS = 1;
}/*** @brief  从 MAX31865 读取一个字节* @param  addr: 寄存器地址* @retval 读取到的数据*/
uint8_t MAX31865_SB_Read(uint8_t addr)
{uint8_t Rx_Data;MAX31865_SPI_CS = 0;// 发送地址while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);SPI_I2S_SendData(SPI1, addr);// 等待接收while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);Rx_Data = SPI_I2S_ReceiveData(SPI1);// 发送 dummy byte 获取数据SPI_I2S_SendData(SPI1, 0xFF);while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);Rx_Data = SPI_I2S_ReceiveData(SPI1);MAX31865_SPI_CS = 1;return Rx_Data;
}/*** @brief  MAX31865模块初始化配置* @param  None* @retval None*/
void MAX31865_Init()
{MAX31865_GPIO_Init();MAX31865_SB_Write(0x80,0xC1);//二线、四线配置//MAX31865_SB_Write(0x80,0xD1);//三线配置delay_ms(100);printf("%02X\r\n", MAX31865_SB_Read(0x00));}/*** @brief  查找索引* @param  Rt:温度值* @retval TableCount表中的位置下标*/
uint16_t MAX31865_Find_Index (double Rt)
{uint16_t i;uint16_t TableCount = sizeof(RTD_Table)/sizeof(RTD_Table[0]);for (i=0; i< TableCount; i++){if (RTD_Table[i] > Rt){return (i-1);}}return (TableCount);
}/*** @brief  通过电压查找分度表计算对应温度* @param  Rt:温度值* @retval 温度值*/
double MAX31865_Conver_Temperature(double Rt)
{unsigned short Index;double temperature;if (Rt < RTD_Table[0])   // 电阻值小于表格最值低于量程下限。{return 0;}if (Rt > RTD_Table[849]) // 电阻值大于表格最大值,超出量程上限 。{return 0;}    //查找当前电阻在分度表中的位置索引Index = MAX31865_Find_Index(Rt);temperature = (Rt - RTD_Table[Index]) / (RTD_Table[Index + 1]- RTD_Table[Index]) + Index + RTD_TABLE_TEMP_MIN;return temperature;
}/*** @brief  获取温度* @param  None* @retval 温度值*/
float MAX31865_Get_Temperature(void)
{unsigned int Data;float Rt;float temperature;Data=MAX31865_SB_Read(0x01)<<8;Data|=MAX31865_SB_Read(0x02);Data>>=1;  //去掉Fault位printf("Read=0x%02X\r\n",Data);Rt = (float)Data/32768.0f*RREF;            //计算RTD电阻值printf("Rt=0x%.1f\r\n",Rt);//计算温度值temperature = MAX31865_Conver_Temperature(Rt);    //查找分度表获取温度//temperature = (Rt-100.0f) / 0.385055f;         //计算法计算温度printf("tempture: %f C\r\n", temperature);    return temperature;
}

(3)、index.h

#ifndef __INDEX_H__
#define __INDEX_H__ //根据MAX31865的技术文档,使用PT100 RTD、400Ω高精度低漂移基准电阻的典型情况下,PT100、400Ω RREF的温度示例。const double RTD_Table[] = {                                                                            
18.52      ,    18.952    ,    19.384    ,    19.815    ,    20.247    ,    20.677    ,    21.108    ,    21.538    ,    21.967    ,    22.397    ,
22.825    ,    23.254    ,    23.682    ,    24.11      ,    24.538    ,    24.965    ,    25.392    ,    25.819    ,    26.245    ,    26.671    ,
27.096    ,    27.522    ,    27.947    ,    28.371    ,    28.796    ,    29.22      ,    29.643    ,    30.067    ,    30.49      ,    30.913    ,
31.335    ,    31.757    ,    32.179    ,    32.601    ,    33.022    ,    33.443    ,    33.864    ,    34.284    ,    34.704    ,    35.124    ,
35.543    ,    35.963    ,    36.382    ,    36.8      ,    37.219    ,    37.637    ,    38.055    ,    38.472    ,    38.889    ,    39.306    ,
39.723    ,    40.14     ,    40.556    ,    40.972    ,    41.388    ,    41.803    ,    42.218    ,    42.633    ,    43.048    ,    43.462    ,
43.876    ,    44.29      ,    44.704    ,    45.117    ,    45.531    ,    45.944    ,    46.356    ,    46.769    ,    47.181    ,    47.593    ,
48.005    ,    48.416    ,    48.828    ,    49.239    ,    49.649    ,    50.06      ,    50.47      ,    50.881    ,    51.291    ,    51.7    ,
52.11      ,    52.519    ,    52.928    ,    53.337    ,    53.746    ,    54.154    ,    54.562    ,    54.97      ,    55.378    ,    55.786    ,
56.193    ,    56.6      ,    57.007    ,    57.414    ,    57.821    ,    58.227    ,    58.633    ,    59.039    ,    59.445    ,    59.85    ,
60.256    ,    60.661    ,    61.066    ,    61.471    ,    61.876    ,    62.28      ,    62.684    ,    63.088    ,    63.492    ,    63.896    ,
64.3      ,    64.703    ,    65.106    ,    65.509    ,    65.912    ,    66.315    ,    66.717    ,    67.12      ,    67.522    ,    67.924    ,
68.325    ,    68.727    ,    69.129    ,    69.53      ,    69.931    ,    70.332    ,    70.733    ,    71.134    ,    71.534    ,    71.934    ,
72.335    ,    72.735    ,    73.134    ,    73.534    ,    73.934    ,    74.333    ,    74.732    ,    75.131    ,    75.53      ,    75.929    ,
76.328    ,    76.726    ,    77.125    ,    77.523    ,    77.921    ,    78.319    ,    78.717    ,    79.114    ,    79.512    ,    79.909    ,
80.306    ,    80.703    ,    81.1      ,    81.497    ,    81.894    ,    82.29      ,    82.687    ,    83.083    ,    83.479    ,    83.875    ,
84.271    ,    84.666    ,    85.062    ,    85.457    ,    85.853    ,    86.248    ,    86.643    ,    87.038    ,    87.432    ,    87.827    ,
88.222    ,    88.616    ,    89.01      ,    89.404    ,    89.798    ,    90.192    ,    90.586    ,    90.98      ,    91.373    ,    91.767    ,
92.16     ,    92.553    ,    92.946    ,    93.339    ,    93.732    ,    94.124    ,    94.517    ,    94.909    ,    95.302    ,    95.694    ,
96.086    ,    96.478    ,    96.87      ,    97.261    ,    97.653    ,    98.044    ,    98.436    ,    98.827    ,    99.218    ,    99.609    ,
100        ,    100.391    ,    100.781    ,    101.172    ,    101.562    ,    101.953    ,    102.343    ,    102.733    ,    103.123    ,    103.513    ,
103.903    ,    104.292    ,    104.682    ,    105.071    ,    105.46    ,    105.849    ,    106.238    ,    106.627    ,    107.016    ,    107.405    ,
107.794    ,    108.182    ,    108.57    ,    108.959    ,    109.347    ,    109.735    ,    110.123    ,    110.51    ,    110.898    ,    111.286    ,
111.673    ,    112.06    ,    112.447    ,    112.835    ,    113.221    ,    113.608    ,    113.995    ,    114.382    ,    114.768    ,    115.155    ,
115.541    ,    115.927    ,    116.313    ,    116.699    ,    117.085    ,    117.47    ,    117.856    ,    118.241    ,    118.627    ,    119.012    ,
119.397    ,    119.782    ,    120.167    ,    120.552    ,    120.936    ,    121.321    ,    121.705    ,    122.09    ,    122.474    ,    122.858    ,
123.242    ,    123.626    ,    124.009    ,    124.393    ,    124.777    ,    125.16    ,    125.543    ,    125.926    ,    126.309    ,    126.692    ,
127.075    ,    127.458    ,    127.84    ,    128.223    ,    128.605    ,    128.987    ,    129.37    ,    129.752    ,    130.133    ,    130.515    ,
130.897    ,    131.278    ,    131.66    ,    132.041    ,    132.422    ,    132.803    ,    133.184    ,    133.565    ,    133.946    ,    134.326    ,
134.707    ,    135.087    ,    135.468    ,    135.848    ,    136.228    ,    136.608    ,    136.987    ,    137.367    ,    137.747    ,    138.126    ,
138.506    ,    138.885    ,    139.264    ,    139.643    ,    140.022    ,    140.4      ,    140.779    ,    141.158    ,    141.536    ,    141.914    ,
142.293    ,    142.671    ,    143.049    ,    143.426    ,    143.804    ,    144.182    ,    144.559    ,    144.937    ,    145.314    ,    145.691    ,
146.068    ,    146.445    ,    146.822    ,    147.198    ,    147.575    ,    147.951    ,    148.328    ,    148.704    ,    149.08    ,    149.456    ,
149.832    ,    150.208    ,    150.583    ,    150.959    ,    151.334    ,    151.71    ,    152.085    ,    152.46    ,    152.835    ,    153.21    ,
153.584    ,    153.959    ,    154.333    ,    154.708    ,    155.082    ,    155.456    ,    155.83    ,    156.204    ,    156.578    ,    156.952    ,
157.325    ,    157.699    ,    158.072    ,    158.445    ,    158.818    ,    159.191    ,    159.564    ,    159.937    ,    160.309    ,    160.682    ,
161.054    ,    161.427    ,    161.799    ,    162.171    ,    162.543    ,    162.915    ,    163.286    ,    163.658    ,    164.03    ,    164.401    ,
164.772    ,    165.143    ,    165.514    ,    165.885    ,    166.256    ,    166.627    ,    166.997    ,    167.368    ,    167.738    ,    168.108    ,
168.478    ,    168.848    ,    169.218    ,    169.588    ,    169.958    ,    170.327    ,    170.696    ,    171.066    ,    171.435    ,    171.804    ,
172.173    ,    172.542    ,    172.91    ,    173.279    ,    173.648    ,    174.016    ,    174.384    ,    174.752    ,    175.12    ,    175.488    ,
175.856    ,    176.224    ,    176.591    ,    176.959    ,    177.326    ,    177.693    ,    178.06    ,    178.427    ,    178.794    ,    179.161    ,
179.528    ,    179.894    ,    180.26    ,    180.627    ,    180.993    ,    181.359    ,    181.725    ,    182.091    ,    182.456    ,    182.822    ,
183.188    ,    183.553    ,    183.918    ,    184.283    ,    184.648    ,    185.013    ,    185.378    ,    185.743    ,    186.107    ,    186.472    ,
186.836    ,    187.2    ,      187.564    ,    187.928    ,    188.292    ,    188.656    ,    189.019    ,    189.383    ,    189.746    ,    190.11    ,
190.473    ,    190.836    ,    191.199    ,    191.562    ,    191.924    ,    192.287    ,    192.649    ,    193.012    ,    193.374    ,    193.736    ,
194.098    ,    194.46    ,    194.822    ,    195.183    ,    195.545    ,    195.906    ,    196.268    ,    196.629    ,    196.99    ,    197.351    ,
197.712    ,    198.073    ,    198.433    ,    198.794    ,    199.154    ,    199.514    ,    199.875    ,    200.235    ,    200.595    ,    200.954    ,
201.314    ,    201.674    ,    202.033    ,    202.393    ,    202.752    ,    203.111    ,    203.47    ,    203.829    ,    204.188    ,    204.546    ,
204.905    ,    205.263    ,    205.622    ,    205.98    ,    206.338    ,    206.696    ,    207.054    ,    207.411    ,    207.769    ,    208.127    ,
208.484    ,    208.841    ,    209.198    ,    209.555    ,    209.912    ,    210.269    ,    210.626    ,    210.982    ,    211.339    ,    211.695    ,
212.052    ,    212.408    ,    212.764    ,    213.12    ,    213.475    ,    213.831    ,    214.187    ,    214.542    ,    214.897    ,    215.252    ,
215.608    ,    215.962    ,    216.317    ,    216.672    ,    217.027    ,    217.381    ,    217.736    ,    218.09    ,    218.444    ,    218.798    ,
219.152    ,    219.506    ,    219.86    ,    220.213    ,    220.567    ,    220.92    ,    221.273    ,    221.626    ,    221.979    ,    222.332    ,
222.685    ,    223.038    ,    223.39    ,    223.743    ,    224.095    ,    224.447    ,    224.799    ,    225.151    ,    225.503    ,    225.855    ,
226.206    ,    226.558    ,    226.909    ,    227.26    ,    227.612    ,    227.963    ,    228.314    ,    228.664    ,    229.015    ,    229.366    ,
229.716    ,    230.066    ,    230.417    ,    230.767    ,    231.117    ,    231.467    ,    231.816    ,    232.166    ,    232.516    ,    232.865    ,
233.214    ,    233.564    ,    233.913    ,    234.262    ,    234.61    ,    234.959    ,    235.308    ,    235.656    ,    236.005    ,    236.353    ,
236.701    ,    237.049    ,    237.397    ,    237.745    ,    238.093    ,    238.44    ,    238.788    ,    239.135    ,    239.482    ,    239.829    ,
240.176    ,    240.523    ,    240.87    ,    241.217    ,    241.563    ,    241.91    ,    242.256    ,    242.602    ,    242.948    ,    243.294    ,
243.64    ,    243.986    ,    244.331    ,    244.677    ,    245.022    ,    245.367    ,    245.713    ,    246.058    ,    246.403    ,    246.747    ,
247.092    ,    247.437    ,    247.781    ,    248.125    ,    248.47    ,    248.814    ,    249.158    ,    249.502    ,    249.845    ,    250.189    ,
250.533    ,    250.876    ,    251.219    ,    251.562    ,    251.906    ,    252.248    ,    252.591    ,    252.934    ,    253.277    ,    253.619    ,
253.962    ,    254.304    ,    254.646    ,    254.988    ,    255.33    ,    255.672    ,    256.013    ,    256.355    ,    256.696    ,    257.038    ,
257.379    ,    257.72    ,    258.061    ,    258.402    ,    258.743    ,    259.083    ,    259.424    ,    259.764    ,    260.105    ,    260.445    ,
260.785    ,    261.125    ,    261.465    ,    261.804    ,    262.144    ,    262.483    ,    262.823    ,    263.162    ,    263.501    ,    263.84    ,
264.179    ,    264.518    ,    264.857    ,    265.195    ,    265.534    ,    265.872    ,    266.21    ,    266.548    ,    266.886    ,    267.224    ,
267.562    ,    267.9      ,    268.237    ,    268.574    ,    268.912    ,    269.249    ,    269.586    ,    269.923    ,    270.26    ,    270.597    ,
270.933    ,    271.27    ,    271.606    ,    271.942    ,    272.278    ,    272.614    ,    272.95    ,    273.286    ,    273.622    ,    273.957    ,
274.293    ,    274.628    ,    274.963    ,    275.298    ,    275.633    ,    275.968    ,    276.303    ,    276.638    ,    276.972    ,    277.307    ,
277.641    ,    277.975    ,    278.309    ,    278.643    ,    278.977    ,    279.311    ,    279.644    ,    279.978    ,    280.311    ,    280.644    ,
280.978    ,    281.311    ,    281.643    ,    281.976    ,    282.309    ,    282.641    ,    282.974    ,    283.306    ,    283.638    ,    283.971    ,
284.303    ,    284.634    ,    284.966    ,    285.298    ,    285.629    ,    285.961    ,    286.292    ,    286.623    ,    286.954    ,    287.285    ,
287.616    ,    287.947    ,    288.277    ,    288.608    ,    288.938    ,    289.268    ,    289.599    ,    289.929    ,    290.258    ,    290.588    ,
290.918    ,    291.247    ,    291.577    ,    291.906    ,    292.235    ,    292.565    ,    292.894    ,    293.222    ,    293.551    ,    293.88    ,
294.208    ,    294.537    ,    294.865    ,    295.193    ,    295.521    ,    295.849    ,    296.177    ,    296.505    ,    296.832    ,    297.16    ,
297.487    ,    297.814    ,    298.142    ,    298.469    ,    298.795    ,    299.122    ,    299.449    ,    299.775    ,    300.102    ,    300.428    ,
300.754    ,    301.08    ,    301.406    ,    301.732    ,    302.058    ,    302.384    ,    302.709    ,    303.035    ,    303.36    ,    303.685    ,
304.01    ,    304.335    ,    304.66    ,    304.985    ,    305.309    ,    305.634    ,    305.958    ,    306.282    ,    306.606    ,    306.93    ,
307.254    ,    307.578    ,    307.902    ,    308.225    ,    308.549    ,    308.872    ,    309.195    ,    309.518    ,    309.841    ,    310.164    ,
310.487    ,    310.81    ,    311.132    ,    311.454    ,    311.777    ,    312.099    ,    312.421    ,    312.743    ,    313.065    ,    313.386    ,
313.708    ,    314.029    ,    314.351    ,    314.672    ,    314.993    ,    315.314    ,    315.635    ,    315.956    ,    316.277    ,    316.597    ,
316.918    ,    317.238    ,    317.558    ,    317.878    ,    318.198    ,    318.518    ,    318.838    ,    319.157    ,    319.477    ,    319.796    ,
320.116    ,    320.435    ,    320.754    ,    321.073    ,    321.391    ,    321.71    ,    322.029    ,    322.347    ,    322.666    ,    322.984    ,
323.302    ,    323.62    ,    323.938    ,    324.256    ,    324.573    ,    324.891    ,    325.208    ,    325.526    ,    325.843    ,    326.16    ,
326.477    ,    326.794    ,    327.11    ,    327.427    ,    327.744    ,    328.06    ,    328.376    ,    328.692    ,    329.008    ,    329.324    ,};#endif  /* __INDEX_H__ */

(4)、程序运行烧录验证结果

http://www.dtcms.com/a/434287.html

相关文章:

  • Elasticsearch MCP 服务器:与你的 Index 聊天
  • 【ROS2学习笔记】话题通信篇:话题通信再探
  • 网络编程中“地址重用(SO_REUSEADDR)”
  • 汕头网站建设推广厂家wordpress 响应式图片
  • Rust的错误处理
  • 可视化地图
  • Rust与C接口交互
  • 【C++实战(64)】C++ 邂逅SQLite3:数据库编程实战之旅
  • 泉州网页建站模板开发网址
  • 中华建设杂志网站记者管理网站英文
  • React 18+TS中使用Cesium 1.95
  • View:new关键词干了什么事,还有原型链是什么
  • 如何在新的Spring Boot项目中关闭Spring Security?
  • 药企做网站需要哪些手续国内新闻最新消息今天在线
  • 【Flutter】GetX最佳实践与避坑指南
  • AIFoto 1.15.4 | AI图片工具,AI擦除衣服,变性感衣服
  • 数据合规与ISO标准体系
  • 在Ubuntu22.04系统下安装Jellyfin
  • 福州做网站的app排名优化公司
  • 【Linux系统】快速入门一些常用的基础指令
  • AI自动化测试:接口测试全流程自动化的实现方法——从需求到落地的全链路实践
  • 打开网站建设中是什么意思表白网站制作代码
  • 【MySQL】MVCC:从核心原理到幻读解决方案
  • Unity游戏基础-4(人物移动、相机移动、UI事件处理 代码详解)
  • 神经网络中优化器的作用
  • 电子商务网站建设的流程图什么是软文
  • 【代码管理】git使用指南(新手向)
  • 【大模型】Agent之:从Prompt到Context的演进之路
  • Docker 搭建 Nginx 并启用 HTTPS 具体部署流程
  • 【代码随想录day 34】 力扣 62.不同路径