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

类型[嵌入式系统设计(基于STM32F4)][徐灵飞][习题解答] 第九章.docx

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

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

    特殊限制:

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

    关 键  词:
    嵌入式系统设计基于STM32F4 徐灵飞 习题解答 嵌入式系统设计基于STM32F4徐灵飞习题解答 第九章 嵌入式 系统 设计 基于 STM32F4 习题 解答 第九
    资源描述:

    1、嵌入式系统设计(基于STM32F429)第 9 章课后题参考答案1. STM32F429 定时器的计数方式有 递增计数 、 递减计数_、 中心对齐_。2. STM32F429 计数寄存器是 TIMx_CNT ,自动重载寄存器是 TIMx_ARR) _,预分频寄存器是 TIMx_PSC 。3. 若 TIMx_PSC=4,则时钟源的预分频系数是 5 。4. 若 TIMx_ARR=89,则一次计数溢出的计数次数是 90 。5. 什么是 PWM 信号?什么是占空比?请绘图举例。答:PWM(Pulse Width Modulation): 脉冲宽度调制,简称脉宽调制。PWM 信号:周期内高电平占空比可调

    2、的信号。占空比:一个周期内高电平持续时间与一个周期时间的比值。6. 递增计数模式是从 0 计数到 ARR 的值,然后产生一次 溢出事件 。7. 递减计数模式是从_ ARR _计数到 0 的值,然后产生一次向下溢出。中心对齐计数模式是先以递增计数模式,从 0 计数到 ARR -1 ,然后产生一次向上溢出,再在从 ARR 计数到 1 , 然后产生一次向下溢出。8. 当使能了比较输出功能,输出 PWM 波,在边沿比较模式下,寄存器 ARR 控制 PWM 周期,寄存器 CCR 控制占空比。9. 当使能了比较输出功能,输出 PWM 波,在边沿比较模式下,当 TIMx_CNT 计数值在_0 CCR-1 寄

    3、存器 范围时,输出有效电平;在 CCRARR 范围时,输出反向电平。10. 定时器TIM2 挂载在APB1 总线上,假设PCLK1=45MHz,选择内部时钟作为计数时钟源(默认情况下这一时钟源频率=2PCLK1),TIM2_PSC=8,TIM2_ARR=49,则计数溢出一次,时间为多长?怎么计算?答:(TIM2_PSC+1)(TIM2_ARR +1)/ 90000000 = 9 50 / 90000000 = 5us11. 使用内部时钟时,怎么确定各定时器的时钟基准频率? 答:除非 APB 的分频系数是 1,否则通用定时器的时钟等于 APB 时钟的 2 倍。默认调用 SystemInit 函数

    4、情况下:SYSCLK=180M AHB 时钟=180MAPB1 时钟=45M,APB2 时钟=90MAPB 分频系数分别是 4 和 2所以,定时器时钟是相应挂载总线时钟的 2 倍。12. 编程序,使用 TIM1 产生 1s 的定时。答:TIM1 挂载在 APB2 总线上,在系统时钟 =180MH 时, PCLK2=90MHz , TIM1 的内部时钟源 = PCLK2*2=180MHz。Tout(定时时间)=1s=(ARR+1)(PSC+1)/1800000000,则可以取 PSC=18000-1,ARR=10000-1。TIM_TimeBaseInitTypeDef TIM_TimeBase

    5、Structure; NVIC_InitTypeDef NVIC_InitStructure;/*-第 1 步*/ 开启 TIM1 时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);/*-第 2 步*/TIM_TimeBaseStructure.TIM_Period = 10000-1;TIM_TimeBaseStructure.TIM_Prescaler = 18000-1; TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_

    6、CounterMode=TIM_CounterMode_Up; TIM_TimeBaseStructure. TIM_RepetitionCounter=0;TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);/*-第 3-1 步*/ 开启定时器更新中断TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE);/ 清除定时器更新中断标志位TIM_ClearFlag(TIM1, TIM_FLAG_Update);/*-第 3-2 步*/ 设 置 中 断 组 为 0 NVIC_PriorityGroupConfig(NVIC_Prio

    7、rityGroup_0);/ 设置中断来源NVIC_InitStructure.NVIC_IRQChannel =TIM1_UP_TIM10_IRQn;/ 设置抢占优先级NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;/ 设置子优先级NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);/*-第 4 步*/ 使能定时器TIM_

    8、Cmd(TIM1, ENABLE);13. 编程序,使用 TIM3 产生 PWM 波。答:(1) 通过 TIM3 的 CH1 输出 PWM 波。(2) PWM 波周期为 200KHz,占空比为 20%。(3) TIM3 的 CH1 对用的引脚为 PA6。GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_OCInitTypeDef TIM_OCInitStructure;/*-第 1 步*/*开启相关的 GPIO 外设时钟*/RCC_AHB1PeriphClockCmd (

    9、RCC_AHB1Periph_GPIOA, ENABLE);/ 使能 TIM3 时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);/*-第 2 步*/TIM3 输出通道 3 复用引脚配置GPIO_PinAFConfig(GPIOA,GPIO_PinSource6,GPIO_AF_TIM3); /TIM3 输出通道 1 引脚复用/* TIM3 输出通道 3 引脚配置 */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF

    10、; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz; GPIO_Init(GPIOA, &GPIO_InitStructure);/*-第 3 步*/ 定义 PWM 波的周期/当定时器从 0 计数到 999,即为 1000 次,为一个定时周期TIM_TimeBaseStructure.TIM_Period = 1000-1;/ 定时器时钟源 TIMxCLK = H

    11、CLK/2=90MHz/ 设定定时器频率为=TIMxCLK/(TIM_Prescaler+1)=200KHzTIM_TimeBaseStructure.TIM_Prescaler = 450-1;/ 采样时钟分频TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;/ 计数方式TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);/*-第 4 步*/*设置比较输出通道,PWM 模式配置*/

    12、* PWM1 Mode configuration: Channel1 */ TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 200; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;/输出有效电平为高电平TIM_OC1Init(TIM3, &TIM_OCInitStructure);/*使能

    13、通道 3 重载*/使能通道 1TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);/*-第 5 步*/ 使能定时器TIM_Cmd(TIM3, ENABLE);14. 编程序,使用 TIM2 检测外部一未知时钟的频率。答:信号从 TIM2 的通道 1 输入。使用的引脚是 PA5。(1) 定时器初始化void TIM_Config_IC(void)GPIO_InitTypeDefGPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_ICInitTypeDefTIM_

    14、ICInitStructure; NVIC_InitTypeDefNVIC_InitStructure;/*-第 1 步*/使能 TIM2 和相关 GPIO 时钟RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOA, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);/*-第 2 步*/配置输入通道引脚GPIO_PinAFConfig(GPIOA,GPIO_PinSource5,GPIO_AF_TIM2);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;

    15、 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOA, &GPIO_InitStructure);/*-第 3 步*/初始化定时器测量时钟TIM_TimeBaseStructure.TIM_Period = 0xFFFFFFFF;/ 定时器时钟源 TIMxCLK = HCLK/2=90MHz/ 设定定时器频率为=TIMxCLK/(TIM_Prescaler+1)=100KHzTIM_TimeBaseStructure.TIM_P

    16、rescaler = 90-1;/ 计数方式TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;/ 采样时钟分频TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;/ 初 始 化 定 时 器 TIMx, x1,8 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);/*-第 4 步*/设置输入捕获通道TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;TIM_ICInitStructure.TI

    17、M_ICPolarity = TIM_ICPolarity_Rising;/ 捕抓到上降延时,把计数寄存器中的值所存到 CCR2 寄存器TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;/一对一连接TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; TIM_ICInitStructure.TIM_ICFilter = 0x0;TIM_PWMIConfig(TIM2, &TIM_ICInitStructure);/*-第 5 步*/选择定时器复位触发源TIM_Sel

    18、ectInputTrigger(TIM2, TIM_TS_TI1FP1); / 选择从模式: 复位模式TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Reset);/*-第 6 步*/开启定时器中断NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);/ 设置中断组为 0 NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; / 设置中断来源NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;/ 设置抢占优先级NVIC_

    19、InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);/ 设置子优先级TIM_ITConfig(TIM2, TIM_IT_CC1, ENABLE);/使能捕获/比较 1 中断请求/*-第 7 步*/TIM_Cmd(TIM2, ENABLE);/使能定时器。(2)中断服务程序,实现频率计算void TIM2_IRQHandler (void)if(TIM_GetITStatus( TIM2, TIM_IT_CC1) != RESET)/* 清除定时器捕获/比较 1 中断 */ TIM_ClearITPendingBit(TIM2, TIM_IT_CC1);/* 获取输入捕获值 */IC_Value = TIM_GetCapture1(TIM2);/得到 PWM 周期/* 频率计算 */Frequency = 90000000/90/(float) IC_Value; printf(频率:%0.2fHzrn , Frequency);

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:[嵌入式系统设计(基于STM32F4)][徐灵飞][习题解答] 第九章.docx
    链接地址:https://www.163wenku.com/p-5716899.html

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


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


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

    163文库