书签 分享 收藏 举报 版权申诉 / 66
上传文档赚钱

类型嵌入式系统设计STM32第7讲课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:3334069
  • 上传时间:2022-08-20
  • 格式:PPT
  • 页数:66
  • 大小:970KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《嵌入式系统设计STM32第7讲课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    嵌入式 系统 设计 STM32 讲课
    资源描述:

    1、7.1 ADC7.1 ADC的硬件结构及特征的硬件结构及特征7.2 7.2 工作模式工作模式7.3 ADC7.3 ADC中断中断7.4 ADC7.4 ADC寄存器寄存器7.5 ADC7.5 ADC库函数库函数7.6 ADC7.6 ADC程序设计程序设计l STM32F103有有2个个12位位ADC(ADC1和和ADC2),是逐次逼近型模拟),是逐次逼近型模拟/数字转换器。数字转换器。ADC的输入时钟不得超过的输入时钟不得超过14MHz,它是由,它是由PCLK2经分频产生经分频产生l 它有多达它有多达18个通道,可测量个通道,可测量16个外部和个外部和2个内部信号源。个内部信号源。l 各通道的各

    2、通道的A/D转换可以单次、连续、扫描或间断模式执行。转换可以单次、连续、扫描或间断模式执行。l ADC的结果可以左对齐或右对齐方式存储在的结果可以左对齐或右对齐方式存储在16位数据寄存器中。位数据寄存器中。ADC123_IN0-PA0ADC123_IN1-PA1ADC123_IN2-PA2ADC123_IN3-PA3ADC12_IN4-PA4ADC12_IN5-PA5ADC12_IN6-PA6ADC12_IN7-PA7ADC12_IN8-PB0ADC12_IN9-PB1ADC12_IN9-PB1ADC123_IN10-PC0ADC123_IN10-PC0ADC123_IN11-PC1ADC12

    3、3_IN11-PC1ADC123_IN12-PC2ADC123_IN12-PC2ADC123_IN13-PC3ADC123_IN13-PC3ADC12_IN14-PC4ADC12_IN14-PC4ADC12_IN15-PC5 ADC12_IN15-PC5 ADC3_IN4-PF6ADC3_IN4-PF6ADC3_IN5-PF7ADC3_IN5-PF7ADC3_IN6-PF8ADC3_IN6-PF8ADC3_IN7-PF9ADC3_IN7-PF9ADC3_IN8-PF10ADC3_IN8-PF10 1212位分辨率位分辨率转换结束、注入转换结束和发生模拟看门狗事件时产生中断转换结束、注入转换结束

    4、和发生模拟看门狗事件时产生中断 单次和连续转换模式单次和连续转换模式 从通道从通道0 0到通道到通道n n的自动扫描模式的自动扫描模式 自校准自校准 带内嵌数据一致性的数据对齐带内嵌数据一致性的数据对齐采样间隔可以按通道分别编程采样间隔可以按通道分别编程 规则转换和注入转换均有外部触发选项规则转换和注入转换均有外部触发选项 间断模式间断模式 双重模式双重模式(带带2 2个或以上个或以上ADCADC的器件的器件)ADCADC转换时间:转换时间:STM32F103xxSTM32F103xx增强型产品:时钟为增强型产品:时钟为56MHz56MHz时为时为1s(1s(时钟为时钟为72MHz72MHz为

    5、为1.17s)1.17s)。ADCADC供电要求:供电要求:2.4V2.4V到到3.6V 3.6V ADCADC输入范围:输入范围:VREF-VREF-VIN VIN VREF+VREF+规则通道转换期间有规则通道转换期间有DMADMA请求产生。请求产生。通道选择通道选择单次转换模式单次转换模式连续转换模式连续转换模式扫描模式扫描模式间断模式间断模式数据对齐数据对齐双双ADCADC模式模式有有1616个多路通道。可以把转换组织成两组:规则组和注入组。在任意多个通道上以任个多路通道。可以把转换组织成两组:规则组和注入组。在任意多个通道上以任意顺序进行的一系列转换构成成组转换。意顺序进行的一系列转

    6、换构成成组转换。规则组由多达规则组由多达1616个转换组成。规则通道和它们的转换顺序在个转换组成。规则通道和它们的转换顺序在ADC_SQRxADC_SQRx寄存器中选择。寄存器中选择。注入组由多达注入组由多达4 4个转换组成。注入通道和它们的转换顺序在个转换组成。注入通道和它们的转换顺序在ADC_JSQRADC_JSQR寄存器中选择。寄存器中选择。单次转换模式下,单次转换模式下,ADCADC只执行一次转换。只执行一次转换。如果一个规则通道被转换:如果一个规则通道被转换:转换数据被储存在转换数据被储存在1616位位ADC_DRADC_DR寄存器中寄存器中 EOC(EOC(转换结束转换结束)标志被

    7、设置标志被设置 如果设置了如果设置了EOCIEEOCIE,则产生中断。,则产生中断。如果一个注入通道被转换:如果一个注入通道被转换:转换数据被储存在转换数据被储存在1616位的位的ADC_DRJ1ADC_DRJ1寄存器中寄存器中 JEOC(JEOC(注入转换结束注入转换结束)标志被设置标志被设置如果设置了如果设置了JEOCIEJEOCIE位,则产生中断。位,则产生中断。然后然后ADCADC停止。停止。在连续转换模式中,当前面在连续转换模式中,当前面ADCADC转换一结束马上就启动另一次转换。转换一结束马上就启动另一次转换。如果一个规则通道被转换:如果一个规则通道被转换:转换数据被储存在转换数据

    8、被储存在1616位的位的ADC_DRADC_DR寄存器中寄存器中 EOC(EOC(转换结束转换结束)标志被设置标志被设置 如果设置了如果设置了EOCIEEOCIE,则产生中断。,则产生中断。如果一个注入通道被转换:如果一个注入通道被转换:转换数据被储存在转换数据被储存在1616位的位的ADC_DRJ1ADC_DRJ1寄存器中寄存器中 JEOC(JEOC(注入转换结束注入转换结束)标志被设置标志被设置 如果设置了如果设置了JEOCIEJEOCIE位,则产生中断。位,则产生中断。此模式用来扫描一组模拟通道。此模式用来扫描一组模拟通道。ADCADC扫描所有被扫描所有被ADC_SQRXADC_SQRX

    9、寄存器寄存器(对规则通道对规则通道)或或ADC_JSQR(ADC_JSQR(对注入通道对注入通道)选中的所有通选中的所有通道。道。在每个组的每个通道上执行单次转换。在每个转换结束时,同一组的下一个通道被自在每个组的每个通道上执行单次转换。在每个转换结束时,同一组的下一个通道被自动转换。动转换。如果设置了寄存器如果设置了寄存器ADC_CR2ADC_CR2中的中的CONTCONT位,转换不会在选择组的最后一个通道上停止,位,转换不会在选择组的最后一个通道上停止,而是再次从选择组的第一个通道继续转换。而是再次从选择组的第一个通道继续转换。规则组规则组 :此模式通过设置:此模式通过设置ADC_CR1A

    10、DC_CR1寄存器上的寄存器上的DISCENDISCEN位激活。它可以用来执行一个短位激活。它可以用来执行一个短序列的序列的n n次转换次转换(n=8)(nODR=0 xffffffff;while(1)ADC=Get_Adc(14);/smart开发板ADC1通道14,PC4 ADC14=ADC*3300/4095;a1=ADC14/1000;a11=ADC%1000;a2=a11/100;a21=a11%100;a3=a21/10;a31=a21%10;a4=a31;a1=a1+0 x30;a2=a2+0 x30;a3=a3+0 x30;a4=a4+0 x30;Uart1_PutChar(

    11、a1);Delay(0 x02fff);Uart1_PutChar(.);Delay(0 x002fff);Uart1_PutChar(a2);Delay(0 x002fff);Uart1_PutChar(a3);Delay(0 x002fff);Uart1_PutChar(a4);Delay(0 x002fff);Uart1_PutChar(0 x0d);Uart1_PutChar(0 x0a);Delay(0 x08fffff);void Uart1_PutChar(u8 ch)USART_SendData(USART1,(u8)ch);if(USART_GetFlagStatus(USA

    12、RT1,USART_FLAG_TXE)=SET)USART_ClearFlag(USART1,USART_FLAG_TXE);void Uart1_PutString(u8*buf,u8 len)u8 i=0;for(i=0;ilen;i+)Uart1_PutChar(*buf+);void uart_init()USART_InitTypeDef USART_InitStructure;USART_InitStructure.USART_BaudRate=9600;/波特率9600USART_InitStructure.USART_WordLength=USART_WordLength_8b

    13、;USART_InitStructure.USART_StopBits=USART_StopBits_1;USART_InitStructure.USART_Parity=USART_Parity_No;USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;USART_Init(USART1,&USART_InitStructure);USART_Cmd(USART1,ENABL

    14、E);/使能串口void Adc_Init(void)void Adc_Init(void)ADC_InitTypeDef ADC_InitStructure;ADC_InitTypeDef ADC_InitStructure;RCC_ADCCLKConfig(RCC_PCLK2_Div6);RCC_ADCCLKConfig(RCC_PCLK2_Div6);ADC_DeInit(ADC1);/?ADC1 ADC_DeInit(ADC1);/?ADC1 初始化初始化ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;ADC_InitStructure.

    15、ADC_Mode=ADC_Mode_Independent;ADC_InitStructure.ADC_ScanConvMode=DISABLE;ADC_InitStructure.ADC_ScanConvMode=DISABLE;ADC_InitStructure.ADC_ContinuousConvMode=DISABLE;ADC_InitStructure.ADC_ContinuousConvMode=DISABLE;ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;ADC_InitStructure.ADC

    16、_ExternalTrigConv=ADC_ExternalTrigConv_None;ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;ADC_InitStructure.ADC_NbrOfChannel=1;ADC_InitStructure.ADC_NbrOfChannel=1;ADC_Init(ADC1,&ADC_InitStructure);ADC_Init(ADC1,&ADC_InitStructure);ADC_Cmd(AD

    17、C1,ENABLE);ADC_Cmd(ADC1,ENABLE);ADC_ResetCalibration(ADC1);ADC_ResetCalibration(ADC1);while(ADC_GetResetCalibrationStatus(ADC1);while(ADC_GetResetCalibrationStatus(ADC1);ADC_StartCalibration(ADC1);ADC_StartCalibration(ADC1);while(ADC_GetCalibrationStatus(ADC1);while(ADC_GetCalibrationStatus(ADC1);AD

    18、C_SoftwareStartConvCmd(ADC1,ENABLE);ADC_SoftwareStartConvCmd(ADC1,ENABLE);u16 Get_Adc(u8 ch)u16 Get_Adc(u8 ch)ADC_RegularChannelConfig(ADC1,ch,1,ADC_RegularChannelConfig(ADC1,ch,1,ADC_SampleTime_239Cycles5);ADC_SampleTime_239Cycles5);ADC_SoftwareStartConvCmd(ADC1,ENABLE);ADC_SoftwareStartConvCmd(ADC

    19、1,ENABLE);while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC);while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC);return ADC_GetConversionValue(ADC1);return ADC_GetConversionValue(ADC1);T=239.5+12.5=252cylesT=239.5+12.5=252cylesvoid RCC_Configuration()/配置系统时钟(略)/配置外设时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|R

    20、CC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_ADC1,ENABLE);/延时函数:void Delay(vu32 nCount)for(;nCount!=0;nCount-);void GPIO_Configuration(void)GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;GPIO_Init(GPIOC

    21、,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;GPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA,&GP

    22、IO_InitStructure);1.STM32F103VB内置()个()位的AD转换器。2.AD转换器有()个模拟量输入通道,其中外部通道()个,内部通道()个。3.STM32F103VB的AD转换器的转换原理是(),转换时间最快为()us。4.STM32F103VB的AD转换器的转换时钟频率不能超过()MHz.5.STM32F103VB的AD转换器可将()V-()V电压转换成()-()的二进制数。6.ADC主要有4种转换模式:()、()、()和()。7.启动AD转换有两种方式:()和()。AD转换结束后,转换结束标志位会置()。多个通道进行AD转换时,可设置成()通道组或者()通道组。规

    23、则通道组最多有()个通道转换。注入通道组最多允许()通道转换。通过编程设置每个通道的转换顺序。转换时间等于采样时间加上()个时钟周期。模拟看门狗部分用于监控检测电压是否超过高、低阈值电压,若超过,可以产生()。ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;ADC_InitStructure.ADC_ScanConvMode=DISABLE;ADC_InitStructure.ADC_ScanConvMode=DISABLE;ADC_InitStruc

    24、ture.ADC_ContinuousConvMode=DISABLE;ADC_InitStructure.ADC_ContinuousConvMode=DISABLE;ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;ADC_InitStructure.ADC_NbrOfChannel=1;ADC_InitStructure.ADC_NbrOfChannel=1;ADC_Init(ADC1,&ADC_InitStructure);ADC_Init(ADC1,&ADC_InitStructure);实验目的:掌握STM32A/D转换器结构特点以及程序设计方法。实验要求:编写程序将通道14的A/D转换结果上传到PC机开关拨到ISP,USB5V利用SSCOM33串口助手,下载前,关闭串口。下载完成后打开串口。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:嵌入式系统设计STM32第7讲课件.ppt
    链接地址:https://www.163wenku.com/p-3334069.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库