嵌入式复习题(五)程序分析题

2023-11-02

1.(定时器) 假设定时器内部时钟为16MHz,(1)完成下面的注释。(2)可以定时的时间为(5)ms。

  htim3.Instance = TIM3;       

  htim3.Init.Prescaler = 799;    //预分频系数为799

  htim3.Init.CounterMode = TIM_COUNTERMODE_UP; //向上计数器  

htim3.Init.Period = 99;  //自动重载值为99

  htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;

  htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;

定时的时间=(799+1)*(99+1)/16=5000us=5ms

2.(GPIO口)请对其作出注释。

 static void MX_GPIO_Init(void)

{

  GPIO_InitTypeDef GPIO_InitStruct;  //定义GPIO结构体变量

  __HAL_RCC_GPIOB_CLK_ENABLE();  //总线时钟使能

  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2,GPIO_PIN_RESET) //向PC2引脚输出低电平

GPIO_InitStruct.Pin = GPIO_PIN_2;

  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;  //(GPIO的工作模式为)推挽输出

  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;  //低速输出

  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

}

3.(串口)(1)完成下面的注释。(2)分析该程序实现的功能。(串口通信)

uint8_t  Tx_str1[]="Welcome \r\n";

uint8_t  Tx_str2[]="LED1 ON! \r\n";

uint8_t  Tx_str3[]="LED1 OFF! \r\n";

uint8_t  Tx_str4[]="COMMAND not found! \r\n";

uint8_t  rx_dat=0;//定义接收的数据为signed  char型,并赋初始值为0。

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)(串口回调函数)

{

if(huart==&huart1)    //判断是否为串口1

{switch(rx_dat)      //选择判断接收的数据

{

case 0x01:HAL_UART_Transmit(&huart1,Tx_str1sizeof(Tx_str1,1000); break;  //若接收到的数据为0x01,向上位机发送“Welcome”,后跳出循环

case 0x02: HAL_UART_Transmit(&huart1,Tx_str2,sizeof(Tx_str2),1000);   break;

case 0x03 :HAL_UART_Transmit(&huart1,Tx_str2,sizeof(Tx_str3,1000);   break;

default: HAL_UART_Transmit(&huart1,Tx_str2,sizeof(Tx_str4,1000);  break;

}}

4.(中断)完成下面的注释。

static void MX_GPIO_Init(void)

{

  GPIO_InitTypeDef GPIO_InitStruct = {0};

  /* GPIO Ports Clock Enable */

  __HAL_RCC_GPIOC_CLK_ENABLE();

  __HAL_RCC_GPIOA_CLK_ENABLE();

  /*Configure GPIO pins : PC0 PC2 */

  GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_2; //选中PC0,PC2引脚

  GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; //具有下降边缘触发检测的外部中断模式

  GPIO_InitStruct.Pull = GPIO_NOPULL; //没有上拉或下拉电阻

  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

  /* EXTI interrupt init*/

  HAL_NVIC_SetPriority(EXTI0_IRQn, 1, 0); //配置EXTI0_IRQn中断,抢先优先级1,响应优先级0

  HAL_NVIC_EnableIRQ(EXTI0_IRQn); //使能中断通道EXTI0_IRQn

  HAL_NVIC_SetPriority(EXTI2_IRQn, 0, 0);

  HAL_NVIC_EnableIRQ(EXTI2_IRQn);

}

5.(定时器输出PWM)阅读下面的程序,简述其实现的功能,假设定时器内部时钟频率为8MHz。

static void MX_TIM3_Init(void)    //定时器3初始化

{

  TIM_ClockConfigTypeDef sClockSourceConfig = {0};

  TIM_MasterConfigTypeDef sMasterConfig = {0};

  TIM_OC_InitTypeDef sConfigOC = {0};

  htim3.Instance = TIM3;

  htim3.Init.Prescaler = 7999;

  htim3.Init.CounterMode = TIM_COUNTERMODE_UP;

  htim3.Init.Period = 1000;

  htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;

  htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;

  sConfigOC.OCMode = TIM_OCMODE_PWM1;

  sConfigOC.Pulse = 500;//脉冲值

  sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;

  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;

  HAL_TIM_MspPostInit(&htim3);

}

功能:将PWM配置为周期为1000个定时器周期,高电平持续时间为500个定时器时钟周期,输出信号占空比为500/1000=50%,每个定时器周期为1us。

一个定时器周期:(T=8000/8Mhz=1us)

占空比:500/1000=50%(Pulse /Period )

6.阅读下面的程序,写出注释,并简述其实现的功能。

已知PC10和PC11连接的是直流电机的输入引脚,rf为串行通信的标志位,cmpv为PWM输出信号的占空比。

void HAL_GPIO_EXTI_Callback(uint16_t  GPIO_Pin)     //(中断回调函数)

{

if(GPIO_Pin==GPIO_PIN_0)

 //若GPIO_Pin测试等于GPIO_PIN_0(若GPIO_PIN_0按键按下)

{

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_10,GPIO_PIN_SET);

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_11,GPIO_PIN_RESET);

}else if(GPIO_Pin==GPIO_PIN_2)

{

if(cmpv<100)

cmpv=cmpv+10;  //占空比在原有基础上加10

__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_4,cmpv);

 //设置定时器3通道4的PWM输出占空比

}

else if(GPIO_Pin==GPIO_PIN_3)

{

if(cmpv>0)

cmpv=cmpv-10;

__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_4,cmpv);

}else if(GPIO_Pin==GPIO_PIN_4)

{

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_11|GPIO_PIN_10,GPIO_PIN_RESET);

//设置PC10,PC11输出低电平

}}

功能:控制电机转速。(若GPIO_Pin==GPIO_PIN_0,电机转动;若GPIO_Pin==GPIO_PIN_2,占空比在原有基础上加10;若GPIO_Pin==GPIO_PIN_3,占空比在原有基础上减10;若GPIO_Pin==GPIO_PIN_4,电机停止转动)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌入式复习题(五)程序分析题 的相关文章

  • 将一列具有相同数据的行合并到同一行

    如何将第一列具有相同数据的行合并到同一行 但要保护重复内容 将重复内容依次填充到重复行中第一行后面 首列相同的 将后面对应列各单元格内容合并到重复行中第一行后对应的单元格内 并且用 连接 对应列只有一个单元格有内容 则不添加 符号 若为空
  • 【sql】mysql索引问题笔记

    q 使用了索引就会有优化 a 然而并不是这样 一下情况都是没有作用的 1 索引字段并没有在查询条件中使用 2 条件查询的过滤结果占比过多 既索引字段为可重复的字段 常固发生此情况 3 对小表查询 此处指索引建立在小表上 联查到数据多的表的时

随机推荐

  • Android(java方法)上实现mp4的分割和拼接 (二)

    http blog csdn net banking17173 article details 20646251 这节谈一下如何在Android上实现mp4文件的高效率切割 业务需求举例 把一段2分钟的mp4文件切割出00 42 至 01
  • Hudi学习3:数据湖主流架构

    delta Lake Iceberg iceberg表可以扩展 Hudi 支持flink 并且支持快速upsert delete
  • VIM使用技巧专区汇总

    查找 set hlsearch 设置搜索高亮 something 在后面的文本中查找something something 在前面的文本中查找something pattern number 将光标停在包含pattern的行后面第numbe
  • 力扣:多数元素

    给定一个大小为 n 的数组 找到其中的多数元素 多数元素是指在数组中出现次数 大于 n 2 的元素 你可以假设数组是非空的 并且给定的数组总是存在多数元素 class Solution public int majorityElement
  • 频数表&频率表

    一 基本概念 1 频数表是将数据集按照某个特定列分类 分组 时观察每个类 组中数据出现次数的表 2 列联表是观测数据按两个或更多属性 定性变量分类时所列出的频数分布表 是由两个以上的变量进行交叉分类的频数分布表 3 频数也称 次数 对样本数
  • 关于this.$refs是undefined

    问题 最近在做开发的时候 遇到这样一个问题 从后端请求到一个图片列表 需要根据返回图片的情况设置元素的宽度 这就需要这样计算list的宽度imgList length imgElement clientWidth 为了在各种移动端自适应 不
  • opencv 解决ippicv下载问题,离线:ippicv_2019_lnx_intel64_general_20180723.tgz

    ippicv 2019 lnx intel64 general 20180723 tgz 这个下载超级慢 有设么用呢 硬件加速 人脸识别 说法不统一啊 以后再完善 下载超时怎么办呢 那我们就采取手动下载的模式然后离线安装 1 下载 ippi
  • UE4像素流

    UE4像素流 局域网 公网 文章目录 UE4像素流 局域网 公网 TOC 文章目录 前言 一 启用像素流 二 项目设置配置像素流参数以及打包 1 配置 打包 配置启动参数 启动像素流服务 信令服务器 http服务 80端口 8888端口 端
  • DDD的分层架构

    DDD作为一种指导思想 还是有一些相对来说可以落地的东西 比如说他这个分层架构 整体分为以下四层 实际上基于上图 我们可以把我们项目工程文件再具体一点 填写到上面的图片上 用户接口层 user interface 用户接口层负责向用户显示信
  • poi生成word文档,包含插入表格

    package com controller import java io FileInputStream import java io FileOutputStream import java io IOException import
  • 「京谈客服系统」出击:京东再起TO B战事

    对于企业而言 基于京谈的技术支持 企业能够获得的不仅仅是客服系统的优化重塑 更多的是把业务直接建立在京东对于客服系统的理解之上 从产业的视角重新定义自身客服体系 作者 皮爷 出品 产业家 数字化浪潮正滚滚而来 8月2日 财富 杂志发布了最新
  • PostgreSQL:“more than one owned sequence found“异常问题解决

    问题 本地数据库正常 但还原部署到服务器数据库后 添加表记录时提示 more than one owned sequence found 的异常报错 解决方案 这个问题是自增列引起的 可能迁移或还原数据表结构时出现异常 解决的办法是重置标识
  • 算法-分治算法

    文章目录 分治算法 什么是分治算法 分治算法的优点 分治算法的核心思想 分治算法的技巧 分治算法的边界 分治算法的常见题型及讲解 归并排序及逆序对问题 归并排序 逆序对问题 快速排序和第k小数 快速排序 第k小数 树的遍历 树的先序遍历 树
  • 高手需要具备的思维模型

    01 思维模型 决定了你的人生状态 电影 教父 中 有一句经典台词 花半秒钟看透本质的人 和花一辈子都看不清的人 注定拥有截然不同的命运 思维模型 决定了你的人生状态 2014年 张一鸣观察到移动互联网时代面临的问题 信息爆炸式增长的同时
  • MATLAB零基础入门(一)

    大家好 我是Henry 上一期的Python爬虫实践中 Henry导入了Matplotlib库进行了新冠疫情的每日新增的绘图 其实Matplotlib的原型是另一门应用非常广泛的语言 Matlab 最近Henry也学习了一些Matlab的绘
  • 【C/C++时间系列】通过gmtime()函数将时间戳转换成GMT时间

    GMT Greenwich Mean Time 格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时 也就是在格林尼治时 的时间 地球每天的自转是有些不规则的 而且正在缓慢减速 所以 格林尼治时间已经不再被作为标准时间使用 现在的标准时间
  • 记一次成功把Vue2后台项目改造成Vite2的踩坑经历

    文章目录 前言 一 项目背景 1 1 为什么要选择Vite 二 迁移前的准备 2 1 补全 vue后缀 2 2 移动public index html的位置 2 2 1 通过vite plugin html插件来修改页面标题 2 3 新建v
  • CCF计算机软件能力认证 C++ 权限查询

    问题描述 授权 authorization 是各类业务系统不可缺少的组成部分 系统用户通过授权机制获得系统中各个模块的操作权限 本题中的授权机制是这样设计的 每位用户具有若干角色 每种角色具有若干权限 例如 用户 david 具有 mana
  • Python Flask简介及安装

    Python Flask简介及安装 Flask 是一个 Python 实现的 Web 开发微框架 一 Flask 简介 Flask 诞生于2010年 是 Armin ronacher 人名 用 Python 语言基于 Werkzeug 工具
  • 嵌入式复习题(五)程序分析题

    1 定时器 假设定时器内部时钟为16MHz 1 完成下面的注释 2 可以定时的时间为 5 ms htim3 Instance TIM3 htim3 Init Prescaler 799 预分频系数为799 htim3 Init Counte