历史上的今天
返回首页

历史上的今天

今天是:2024年12月17日(星期二)

正在发生

2020年12月17日 | STM32F7xx —— ADC

2020-12-17 来源:eefocus


/*****************************************************************************

*          ADC1     ADC2     ADC3

* 通道0    PA0      PA0      PA0

* 通道1    PA1      PA1      PA1

* 通道2    PA2      PA2      PA2

* 通道3    PA3      PA3      PA3

* 通道4    PA4      PA4      PF6

* 通道5    PA5      PA5      PF7

* 通道6    PA6      PA6      PF8

* 通道7    PA7      PA7      PF9

* 通道8    PB0      PB0      PF10

* 通道9    PB1      PB1      PF3

* 通道10   PC0      PC0      PC0

* 通道11   PC1      PC1      PC1

* 通道12   PC2      PC2      PC2

* 通道13   PC3      PC3      PC3

* 通道14   PC4      PC4      PF4

* 通道15   PC5      PC5      PF5

* 通道18   温度传感器

*****************************************************************************/

static ADC_HandleTypeDef adc_handle;

 

static void adc_gpio_init(void)

{

 

}

 

static void adc_mode_init(void)

{

  __HAL_RCC_ADC1_CLK_ENABLE();

  adc_handle.Instance = ADC1;

  adc_handle.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;

  adc_handle.Init.Resolution = ADC_RESOLUTION_12B; //12 位模式

  adc_handle.Init.DataAlign = ADC_DATAALIGN_RIGHT; //右对齐

  adc_handle.Init.ScanConvMode = DISABLE; //非扫描模式

  adc_handle.Init.EOCSelection = DISABLE; //关闭 EOC 中断

  adc_handle.Init.ContinuousConvMode = DISABLE; //关闭连续转换

  adc_handle.Init.NbrOfConversion = 1;

  adc_handle.Init.DiscontinuousConvMode = DISABLE; //禁止不连续采样模式

  adc_handle.Init.NbrOfDiscConversion = 0; //不连续采样通道数为 0

  adc_handle.Init.ExternalTrigConv = ADC_SOFTWARE_START; //软件触发

  adc_handle.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; //使用软件触发

  adc_handle.Init.DMAContinuousRequests = DISABLE; //关闭 DMA 请求

  HAL_ADC_Init(&adc_handle);

}

 

void ADCInit(void)

{

  adc_gpio_init();

  adc_mode_init();

}

 

uint16_t ADCGet(uint32_t channel)

{

  ADC_ChannelConfTypeDef adc_config;

 

  adc_config.Channel = channel;

  adc_config.Rank = 1;

  adc_config.SamplingTime = ADC_SAMPLETIME_480CYCLES;

  adc_config.Offset = 0;

 

  HAL_ADC_ConfigChannel(&adc_handle, &adc_config);

  HAL_ADC_Start(&adc_handle);

  HAL_ADC_PollForConversion(&adc_handle, 10); //轮询转换

 

  return (uint16_t)HAL_ADC_GetValue(&adc_handle);

}

 

float ADCAverageGet(uint32_t channel, uint16_t times)

{

  float temp;

  uint32_t value = 0, average;

  uint16_t i;

 

  for(i = 0; i < times; ++i)

  {

    value += ADCGet(channel);

  }

 

  average = value / times;

 

  temp = (float)average * (3.3 / 4096);

 

  return temp;

}

 

// T = ((Vsense - V25) / avg_slope) + 25;

// V25:Vsense在25°时的数值(0.76)

// avg_slope:温度与Vsense曲线的平均斜率(2.5mV/度)

float ADCSocInnerTemperature(void)

{

  float temperature;

 

  temperature = ADCAverageGet(ADC_CHANNEL_TEMPSENSOR, 10);

 

  temperature = (temperature - 0.76f) * 400 + 25;

 

  printf("%frn", temperature);

 

  return temperature;

}


推荐阅读

史海拾趣

DESOUTTER公司的发展小趣事

2001年,Desoutter公司与CP(Chicago Pneumatic)和GR(Grorges Renault)合并,成立了CPDI公司。这次合并使Desoutter公司获得了更强大的技术实力和市场资源,进一步巩固了其在气动工具领域的领先地位。合并后,CPDI公司继续致力于气动工具的研发和生产,并推出了一系列创新产品,以满足市场的不断变化和升级需求。

Bombardier Inc公司的发展小趣事

1976年,庞巴迪公司的航空业务经历了重大变革。其加拿大航空子公司被加拿大政府收购,成为加拿大主要的航空企业。在此期间,庞巴迪在电子系统方面的研发能力得到了进一步提升。公司开始涉足更先进的航空电子技术,如自动驾驶系统、导航系统等,为现代航空业的发展做出了重要贡献。

ERGOBAHCO公司的发展小趣事

为了进一步提升公司的竞争力,ERGOBAHCO公司开始积极拓展国际市场。公司组建了一支专业的国际业务团队,参加了多场国际展会,并与多家国际知名企业建立了合作关系。通过不断努力,ERGOBAHCO公司的产品成功打入了欧美、东南亚等国家和地区的市场,公司的国际化程度得到了显著提升。

巨盛电子(Chesen)公司的发展小趣事

随着国内市场的饱和,巨盛电子(Chesen)开始寻求国际化发展。公司制定了一系列国际化战略,包括拓展海外市场、建立海外生产基地、与国际品牌合作等。通过这些努力,巨盛电子成功进入了欧美、东南亚等市场,实现了品牌的全球化布局。同时,公司还积极与国际品牌合作,共同开发新产品,提高了品牌知名度和市场份额。

展恒电子(Broadic)公司的发展小趣事

2007年,Broadic在美国加州成立,以其前瞻性的视野和深厚的技术积累,迅速在电子行业中崭露头角。同年,公司开始着手研发创新的芯片技术,奠定了其未来发展的坚实基础。2008年,深圳市展恒电子有限公司应运而生,作为Broadic在国内的销售公司,它的成立标志着Broadic正式进入中国市场,开始了其在国内的快速发展之旅。

CINTERION公司的发展小趣事

CINTERION的前身可追溯到西门子于1995年创建的无线模块业务。在成立之初,该公司便专注于工业用机器对机器(M2M)无线通信模块的研发与生产。随着技术的不断进步,CINTERION逐渐在行业内崭露头角,其产品在智能电网、汽车、公用事业等领域得到了广泛应用。1996年,CINTERION成功推出了全球第一款蜂窝模组,这一创新为公司在无线通信模组市场打下了坚实的基础。

问答坊 | AI 解惑

常见的嵌入式操作系统

DOS     微软一开始选用了派特森的Q-DOS “QUICK AND DISK OPERATING SYSTEM ”为基础然后再扩充功能而成 MS-DOS,主要是采用由IBM 提供的使用8088 微处理器的计算机作开发平台,它是以16 字节单人单工操作系统,特别适合一些功能简单 ...…

查看全部问答>

一种用VHDL设计嵌入式Web Server的方案

摘要: 近几年嵌入式Internet开始迅猛发展,但绝大多数嵌入式Internet都使用微控制器和相应的软件来实现。本文介绍一种基于硬件来实现嵌入式Web Server的方案。该方案的核心思想是用VHDL语言来设计实现,并且用FPGA进行验证。 关键词: VHDL Inte ...…

查看全部问答>

请教关于PXA270唤醒源的设置

专家好:    我的PDA前两天在公司测试部门发现,按键进入深度休眠后,不能马上按键唤醒,只有等5~6秒(大约值)后才能马上唤醒 我的按键休眠是设置的GPIO0,唤醒源也是GPIO0 具体的设置如下:          &nbs ...…

查看全部问答>

wince5.0的中断向量地址问题

shuiyan 大哥你好!  小弟最近在搞OAL里的中断函数OALTimerInit遇到个问题,是这样的:  我在private下的armtrap.s里发现了中断的异常跳转表 VectorInstructions         ldr     pc, [p ...…

查看全部问答>

如何在win ce下设置图片的3D凸起效果?(C#) 谢谢了!

如何在win ce下设置图片的3D凸起效果?(C#) 谢谢了!…

查看全部问答>

不好意思,问一下这个问题:-sh: ./helloworld: not found

我是一名初学者,今天终于完成了博创S3C2410上Linux 2.6.22的移植,网卡,文件系统都能正常使用,感觉蛮有成就感的。 但如今这个问题不知道如何解决了: 用编译内核和Busybox 1.5.1的编译器编译了一个helloworld,在开发板上用NFS挂载上,运行./hello ...…

查看全部问答>

全球首个太空机器人

$(\'swf_vSx\').innerHTML=AC_FL_RunContent(\'width\', \'550\', \'height\', \'400\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', encodeURI(\'http://www.tudou.com/v/IJy11e9LXmk/v.swf\'), \'quality\', ...…

查看全部问答>

Quartus II的用法

我写了两段不同的verilog代码来实现同一个功能,现在我想比较哪个代码在FPGA上跑的更快,我在Quartus II里如何看出来呢,请各位指导我一下,谢谢。…

查看全部问答>

红外接收头的问题

目的:制作一个模块,该模块能检测红外发射管发出的红外线,波长为940nm,红外接收头型号为IRM-3638,当有接收头接收到红外光,那么模块上的LED灯就亮 我画的电路图如下:     但是我的板子没有达到预期目标,LED灯不亮,接收头没有 ...…

查看全部问答>