STM32F429接MAX6675读取热电偶温度

发布者:AngelicJourney最新更新时间:2018-04-22 来源: eefocus关键字:STM32F429  MAX6675  热电偶 手机看文章 扫描二维码
随时随地手机看文章

第一次编写STM32程序,有很多问题请教,我想把MAX6675的SO的数据读出来转换成实际温度,用串口工具读出来。
是不是还有哪些没配置好?小弟刚开始弄这个,着急用,在此感谢了!

  1. #include "sys.h"

  2. #include "delay.h"

  3. #include "usart.h"


  4. #define SPI1_CS_Pin GPIO_PIN_4


  5. void Delay(__IO uint32_t nCount);


  6. void Delay(__IO uint32_t nCount)

  7. {

  8. while(nCount--){}

  9. }


  10. int main(void)

  11. {

  12.     uint16_t GetData=0;

  13.     uint16_t Temperature = 0;

  14.     uint16_t T = 0;




  15.     GPIO_InitTypeDef GPIO_A;        //定义一个GPIO_InitTypeDef的结构体GPIO_A

  16.     SPI_HandleTypeDef hspi1;        //SPI句柄



  17.     HAL_Init(); //初始化HAL库 

  18.     Stm32_Clock_Init(360,25,2,8); uart_init(115200); //初始化USART


  19.     __HAL_RCC_SPI1_CLK_ENABLE();        //开启SP1时钟

  20.     __HAL_RCC_USART1_CLK_ENABLE();

  21.     __HAL_RCC_GPIOA_CLK_ENABLE(); //开启GPIOA时钟


  22.     GPIO_A.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7;

  23.     GPIO_A.Mode = GPIO_MODE_AF_PP;        //复用推挽输出

  24.     GPIO_A.Pull=GPIO_PULLUP; //上拉

  25.     GPIO_A.Speed = GPIO_SPEED_LOW; //2MHz

  26.     GPIO_A.Alternate = GPIO_AF5_SPI1;

  27.     HAL_GPIO_Init(GPIOA,&GPIO_A);        //上面为配置参数,此处启动初始化


  28.     GPIO_A.Pin=SPI1_CS_Pin; //配置PA4(CS片选信号)

  29.     GPIO_A.Mode=GPIO_MODE_OUTPUT_PP; //推挽输出

  30.     GPIO_A.Speed = GPIO_SPEED_LOW; //2MHz

  31.     HAL_GPIO_Init(GPIOA,&GPIO_A);        //上面为配置参数,此处启动初始化

  32.     HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4,GPIO_PIN_SET);        // 先把片选拉高,真正用的时候再拉低


  33.     hspi1.Instance = SPI1;

  34.     hspi1.Init.Mode = SPI_MODE_MASTER;        //主模式

  35.     hspi1.Init.Direction = SPI_DIRECTION_2LINES_RXONLY;//SPI设置为单线接受

  36.     hspi1.Init.DataSize = SPI_DATASIZE_16BIT;//SPI发送接收数据为16位帧格式

  37.     hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH;//同步时钟空闲状态为 高电平

  38.     hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;        //同步时钟第二个跳变沿数据被采集        

  39.     hspi1.Init.NSS = SPI_NSS_SOFT;        //NSS信号由软件控制

  40.     hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256; //波特率预分频值为256;

  41.     hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;        //数据传输从MSB位开始

  42.     hspi1.Init.TIMode = SPI_TIMODE_DISABLE;        //关闭TI模式

  43.     hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;        //关闭CRC

  44.     hspi1.Init.CRCPolynomial = 7;        //CRC值计算的多项式

  45.     HAL_SPI_Init(&hspi1);        //初始化

  46.     __HAL_SPI_ENABLE(&hspi1);        //使能SPI1


  47.     #define SPI1_L HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);//片选信号拉低为SPI_L

  48.     #define SPI1_H HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);        //片选信号拉高为SPI_H

  49.     SPI1_H;        //拉高片选,为后面开启片选做准备



  50.     while(1)

  51.     {

  52.         SPI1_L;        //开启片选

  53.         HAL_SPI_Receive(&hspi1, (uint8_t*)&GetData, 1, 1000);

  54.         Temperature = (GetData>>3)&0x0fff;

  55.         SPI1_H;        

  56.         HAL_Delay(1000);


  57.         T = Temperature*1024/4095;

  58.         printf ("Temperature:%d\n",T);

  59.     }


关键字:STM32F429  MAX6675  热电偶 引用地址:STM32F429接MAX6675读取热电偶温度

上一篇:STM32通过I2C与BMP280通信
下一篇:STM32简单数据传输方法与通信协议(适合串口和一般总线)

推荐阅读最新更新时间:2024-03-16 16:00

第18章 STM32F429的GPIO应用之跑马灯
18.1 初学者重要提示 学习本章节前,务必保证已经学习了第15,16和17章。 虽然是跑马灯的初级例程,但有必要掌握程序的基本设计框架,后面的例子都是建立在这个框架的基础上。 LED不是用CPU的IO直接驱动,而是由74HC574驱动的,74HC574是一个8路并口缓冲器,挂在FMC总线上,实现IO扩展。也许初学者会问为什么要做IO扩展,不是已经用了208脚的STM32F429BIT6吗?因为开发板使用了32位SDRAM和RGB888硬件接口,消耗IO巨大,所以必须得扩展了。 对于初学者来说,仅需掌握LED驱动的实现方法和对应的API调用即可,需要深入的理解IO扩展部分,会在后面的节进行详细讲解。 FMC总线扩展
[单片机]
第18章 <font color='red'>STM32F429</font>的GPIO应用之跑马灯
第41章 STM32F429的LTDC应用之LCD汉字显示和2D图形显示
41.1 初学者重要提示 学习本章节前,务必优先学习第40章,需要对LTDC的基础知识和HAL库的几个常用API有个认识。 本章的第4小节LCD驱动设计非常重要。 如果自己观察的话,LCD上电会有一个瞬间高亮的问题,在此贴进行了描述:http://www.armbbs.cn/forum.php?mod=viewthread&tid=82619 。这个解决方案已经应用到本章配套的例子上。 本章节用到的汉字方案会在下章专门为大家讲解,下面是小字库的制作方法:http://www.armbbs.cn/forum.php?mod=viewthread&tid=202 。 调试状态或者刚下载LCD的程序到里面,屏幕会抖动,这个是
[单片机]
第41章 <font color='red'>STM32F429</font>的LTDC应用之LCD汉字显示和2D图形显示
STM32F429 >> 22. FMC_扩展外部SDRAM(一)
STM32 控制器芯片内部有一定大小的 SRAM 及 FLASH 作为内存和程序存储空间,但当程序较大,内存和程序空间不足时,就需要在 STM32 芯片的外部扩展存储器。 SDRAM 控制原理 给 STM32 芯片扩展内存与给 PC 扩展内存的原理是一样的,只是 PC 上一般以内存条的形式扩展,内存条实质是由多个内存颗粒(即 SDRAM 芯片)组成的通用标准模块,而STM32 直接与 SDRAM 芯片连接。 SDRAM 芯片外观: 下图是一种型号为 IS42-45S16400J 的 SDRAM芯片内部结构框图: SDRAM 信号线 除了时钟、地址和数据线,控制 SDRAM 还需要很多信号配合,它们具体作用在
[单片机]
<font color='red'>STM32F429</font> >> 22. FMC_扩展外部SDRAM(一)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved