5回答

1收藏

【赚周年币】技术帖_F769IDISCOVERY开发板内部温度检测

#线上活动 #线上活动 2313 人阅读 | 5 人回复 | 2016-12-04

        与通常的开发板不同,由于F769IDISCOVERY开发板其自身已配备了4英寸电容式触摸屏,所以在例程的编写上也不再采用常规的以串口来输出显示结果的方式。
    以检测内部温度的例程为例,它就是直接地将检测的温度值显示在触摸屏上,其显示效果如图1所示。LD2闪烁、触摸屏显示内部温度值约在35~36度间)

1 内部温度测量

那该显示效果是如何来实现的呢?
我们可由其主函数看出端倪,其程序内容及注释如下:
  1. int main(void)   
  2. {
  3.   char desc[50];
  4.   /* 配置 MPU 属性以进行写处理 */
  5.   MPU_Config();
  6.   /* 使能 CPU Cache */
  7.   CPU_CACHE_Enable();
  8.   /* STM32F7xx HAL library 测试化 */
  9.   HAL_Init();
  10.   /* 配置系统时钟为200 MHz */
  11.   SystemClock_Config();
  12.   /* 配置 LED1 and LED2,但只使用了LED2 */
  13.   BSP_LED_Init(LED1);
  14.   BSP_LED_Init(LED2);
  15.   /* 配置 LCD 固件 */
  16.   LCD_Config();
  17.   /* 配置ADC 固件 */
  18.   ADC_Config();
  19.   /* 启动转换处理 */
  20.   HAL_ADC_Start_DMA(&AdcHandle, (uint32_t*)&ConvertedValue, 1);
  21.   /* 设置循环 */
  22.   while (1)
  23.   {
  24.     /* 设置一个刷新周期延时 */
  25.     HAL_Delay(TEMP_REFRESH_PERIOD);
  26.      /* 将采集的电压值转换为相应的温度值 */
  27.     JTemp = ((((ConvertedValue * VREF)/MAX_CONVERTED_VALUE) - VSENS_AT_AMBIENT_TEMP) * 10 / AVG_SLOPE) + AMBIENT_TEMP;
  28.     /* 将温度值显示到LCD屏 */
  29.     sprintf(desc, "Internal Temperature is %ld degree C", JTemp);
  30.     BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()/2 + 45, (uint8_t *)desc, CENTER_MODE);
  31.     BSP_LCD_ClearStringLine(30);
  32.     /* 切换LED2状态,以指示采集过程 */
  33.     BSP_LED_Toggle(LED2);
  34.   }
  35. }
复制代码
分享到:
回复

使用道具 举报

回答|共 5 个

倒序浏览

沙发

xiaopaohu123

发表于 2016-12-5 09:17:15 | 只看该作者

写的不错,期待楼主的更多例子
板凳

jinglixixi

发表于 2016-12-5 09:56:00 | 只看该作者

xiaopaohu123 发表于 2016-12-5 09:17
写的不错,期待楼主的更多例子

多谢,一定尽力!
地板

噗噗熊

发表于 2016-12-5 11:01:54 | 只看该作者

这个板子最近很热嘛
5#

jinglixixi

发表于 2016-12-6 09:19:28 | 只看该作者

噗噗熊 发表于 2016-12-5 11:01
这个板子最近很热嘛

的确,而且板子的配置很高。
6#

xiaopaohu123

发表于 2016-12-8 15:36:08 | 只看该作者

噗噗熊 发表于 2016-12-5 11:01
这个板子最近很热嘛

配置好,资料详尽,是高大上的板子,当然很值得拉
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条