历史上的今天
返回首页

历史上的今天

今天是:2025年04月22日(星期二)

正在发生

2018年04月22日 | STM32F429接MAX6675读取热电偶温度

2018-04-22 来源:eefocus

第一次编写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.     }


推荐阅读

史海拾趣

ACL staticide公司的发展小趣事

ACL Staticide是一家专业生产静电控制产品的公司,以下是该公司发展的五个相关故事:

  1. 公司成立和起步阶段: ACL Staticide成立于1971年,总部位于美国伊利诺伊州,是一家专注于静电控制产品的制造商。公司最初致力于研发和生产静电消除剂、清洁剂和防静电地板涂层等产品,用于解决静电问题带来的种种困扰,如静电放电、静电积聚等。

  2. 技术创新和产品拓展: 随着市场对静电控制需求的增长,ACL Staticide不断进行技术创新,并拓展了产品线。公司推出了一系列静电控制产品,包括静电消除器、清洁剂、防静电地板涂层、静电测试仪器等,以满足各种不同行业的需求。

  3. 市场拓展和国际合作: ACL Staticide积极开拓国内外市场,与全球各地的客户建立了合作关系。公司的产品被广泛应用于电子制造、半导体、医疗、航空航天、汽车等领域,赢得了客户的信赖。同时,ACL Staticide与国际知名企业合作,共同推动静电控制技术的发展。

  4. 持续投入研发和质量控制: ACL Staticide不断加大研发投入,致力于产品质量和技术创新。公司设立了专门的研发团队和实验室,不断改进现有产品,并开发新的静电控制解决方案,以满足客户不断变化的需求。

  5. 未来发展展望: ACL Staticide将继续致力于静电控制产品的研发和应用,不断推出更先进、更可靠的产品和解决方案,以满足客户在各个领域的需求。公司将加强国际市场拓展,提升自身在全球市场的竞争力,为行业的发展做出更大的贡献。

千志电子(CCO)公司的发展小趣事

千志电子于1986年由董事长陈初志先生在台湾创立,起初专注于生产各类型插件式电阻。随着业务的不断发展,公司意识到拓展更广阔市场的重要性。1996年,千志电子进军中国市场,在深圳设立了千志电子(深圳)有限公司,这一举措标志着公司开始走向国际化。深圳作为中国改革开放的前沿阵地,为千志电子提供了丰富的资源和广阔的市场空间,为其后续的发展奠定了坚实基础。

ENOCEAN公司的发展小趣事

EnOcean GmbH成立于2001年,总部设在慕尼黑附近的奥伯兴。自创立之初,公司就专注于无线无源传输技术的研发,旨在提供一种无需外部电源、低维护成本的无线传感器解决方案。这种技术的核心在于能量转换器,能够收集环境中的微弱能量(如光能、振动能等),转化为电能供传感器使用。随着技术的不断完善,EnOcean逐渐在电子行业中崭露头角。

High Voltage Power Solutions Inc公司的发展小趣事

EnOcean GmbH成立于2001年,总部设在慕尼黑附近的奥伯兴。自创立之初,公司就专注于无线无源传输技术的研发,旨在提供一种无需外部电源、低维护成本的无线传感器解决方案。这种技术的核心在于能量转换器,能够收集环境中的微弱能量(如光能、振动能等),转化为电能供传感器使用。随着技术的不断完善,EnOcean逐渐在电子行业中崭露头角。

H&D Wireless公司的发展小趣事

高创科技起源于1987年的以色列,最初是一家专注于直驱运动控制驱动器开发的厂商。在以色列的三十多年里,高创积累了丰富的软件算法技术,特别是在运动控制领域形成了独特优势。这种积累不仅体现在其产品的稳定性和高性能上,更为后续的技术创新和市场拓展奠定了坚实基础。

骅讯(Cmedia)公司的发展小趣事

进入21世纪后,随着USB技术的普及,骅讯公司迅速抓住市场机遇,进军USB音频业务。凭借其在音频技术领域的深厚积累,骅讯成功开发出多款USB音频产品,并在市场上取得了良好的反响。这一举措不仅拓展了骅讯的业务范围,也为其在音频领域的持续发展奠定了坚实的基础。

问答坊 | AI 解惑

基于nRF401的通用智能无线收发装置

基于nRF401的通用智能无线收发装置 谢锦沐,吴功平,蒋锡健,祝鲁金 (武汉大学 动力与机械学院 湖北 武汉 430072) 目前,在各种仪器仪表数据采集系统,遥控测控系统中都需要嵌入无线数据传输的装置,本文介绍了一种通过单片机W77E58 ...…

查看全部问答>

张强 元器件零售供求转帖

本帖最后由 paulhyde 于 2014-9-15 09:19 编辑 深圳市迈威达电子有限公司 张强 研发部项目经理 电话:15813708242 0755-86656088-507 邮件:zq88_88@163.com QQ:82029536 供货方式:零售 买家承担邮寄费用 价格:尽量保证最低价,买 ...…

查看全部问答>

ARM教程入门

谁需要的话就分享以下把…

查看全部问答>

大家快来看看我个大菜鸟啊,只要您话几分钟时间看一下,我就为您送分啦!

我想在VC里面实现禁止使用USB存储器,光驱,软驱,该怎么做啊?比如检测到U盘之类的就自动移除,要是已经再使用U盘就强制禁止使用。光驱和软驱也一样,反正不允许用户使用。 修改注册表的方法不可以使用哦。 我是一个菜鸟,见笑了啊~~…

查看全部问答>

*各位高手: 我想做一个软件,运行在 SP 和 PPC的手机上, 我该如何做?

程序很简单, 只需要用到 webservice, 然后浏览网页. 我想用 EVC4开发, 但是他只能做 mobile 5.0的程序, 请问各位, mobile 5.0的程序 要运行在 moblie 6.0上, 要重新用 VS2005 重新编译一次才能运行还是直接copy到 6.0的手机上就可以运行呢? 还有, ...…

查看全部问答>

触摸屏在linux2.6的驱动问题

我的在linux2.6下的触摸屏的驱动,能使用,但是在进入校准界面时提示需要触摸屏才能校准,也就是说系统似乎认为它不是触摸屏而是一般的鼠标,这是怎么回事呢?要从哪方面解决呢…

查看全部问答>

怎么样动态生成 date time picker ???????????????????????

想要动态生成 date time picker而不是拖组建的方式 在程序里面怎么实现啊??网上找了下都说是用CDateTimeCtrl类,但是这个类怎么显示时间选择器的界面啊???? 希望有详细的代码最好。…

查看全部问答>

求滤波器芯片方案

   各位大哥好!小弟最近需要一块带通模拟滤波器,通带30M,过渡带单边1M。(入通带30~60M,过渡带29~30M,60~61M),请问有实现这种要求的芯片卖吗?如果有,请各位大哥推荐几款。谢谢!!…

查看全部问答>

我的应急灯点亮时间超过半天,13小时

星期天有时间了,我从早晨开始充电,然后我就去忙别的事啦, 下午,17.30零秒,开始让应急灯工作,直到我早晨上班6:36左右,一组灭灯,一组闪烁,明显电压不足.   这次我的灯工作13个整小时,关键的原因是充电.   我发现一个经验啥:   ...…

查看全部问答>