stm32嵌入式系统与应用习题4

一、选择题

1. 定时器的时基单元不包括(D )
A. 自动重载寄存器
B. 定时器计数器
C. 预分频寄存器
D. 溢出寄存器
2. 下列不属于通用定时器的是( D )
A.TIM2
B.TIM4 C TIM5
D. TIM
3. 下列属于高级通用定时器的是(A )
A.TIM1
B.TIM4 C TIM5
D. TIM7
4. 带互补输出功能的定时器是(A )
A. 高级定时器
B. 通用定时器
C. 基本定时器
5. 没有捕获 / 比较功能的定时器是(C )
A. 高级定时器
B. 通用定时器
C. 基本定时器

二、填空题

1. STM32 通用定时器的 16 位计数器可以采用三种方式工作, 向上计数模式、向下计数模式、中央 对齐计数模式
2. STM32 定时器具备 16 位可编程预分频器,时钟频率的分频系数为 65535 之间的任意数值。
3. 当定时器使用 GPIO 引脚实现输出比较产生 PWM IO 引脚必须设置为 复用输出 模式。
4. STM32F103 芯片有 2 个普通定时器。
5. 除去看门狗定时器和系统定时器的八个定时器, STM32F103 分成 3 类,分别为 基本定时器 、
高级定时器 和 通用定时器。
6. SysTick 定时器是 24 位的。
7. 可以使用定时器的输入 捕获 来测量输入脉冲信号频率。
8. TIM_TimeBaseInit ) 函数的功能是 初始化时基单元
9. STM32 的定时器是 16 位定时器。

三、简答题

1. STM32F103 微控制器定时器的类型有哪几种? STM32F103 微控制器不同类型的定时器有什么区别?

类型

编号

总线

功能

高级定时器

TIM1TIM8

APB2

拥有通用定时器全部功能,并额外具有重复计数器、死区生成、互补输出、刹车输入等功能

通用定时器

TIM2TIM3TIM4TIM5

APB1

拥有基本定时器全部功能,并额外具有内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等功能

基本定时器

TIM6TIM7

APB1

拥有定时中断、主模式触发DAC的功能

2. STM32F103 微控制器通用定时器的常用工作模式有哪些?

1. 单脉冲模式(One-pulse Mode):定时器在接收到触发事件后,产生一个单脉冲信号,并停止计数。
2. 自由运行模式:定时器持续运行,不受外部事件的影响,周期性地产生中断或更新事件。
3. 输入捕获模式:定时器用于测量输入信号的脉冲宽度或输入信号与定时器时钟之间的时间间隔。
4. 输出比较模式:定时器与一个或多个输出通道配合使用,比较计数器的值与预设的比较值,根据比较结果控制输出信号的状态。
5. PWM 模式:定时器通过设置占空比控制输出信号的脉冲宽度,用于产生 PWM 信号。
3. 简述 STM32 定时器的计数器模式。
• 上升计数模式(Up Counting Mode):计数器从 0 开始递增,直到达到最大值(通常是定时器的自动重装载    
   值),然后重新从 0 开始计数。这是最常用的计数模式。
• 下降计数模式(Down Counting Mode):计数器从设定的初始值开始递减,直到达到 0,然后重新从初始值开    
   始计数。
• 中央对齐模式(Center-aligned Mode):计数器在上升和下降之间交替计数,并在达到最大值和最小值时反 
  向计数。这种模式可以用于产生对称的脉冲信号或实现高级的 PWM 控制。

四、程序设计题

1.使用stm32f103c8t6设计程序,使用定时器在 PA2 端口输出 f=2Hz,占空比 q=2/3 的方波。

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); // 使能TIM2时钟
TIM_TimeBaseStructure.TIM_Period = 49999; // 设置自动重装载值,频率为2Hz
TIM_TimeBaseStructure.TIM_Prescaler = 7199; // 设置预分频值,时钟频率为72MHz
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; // 不分频
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; // 上升计数模式
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
// 配置通道1为PWM模式
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = 33333; // 设置占空比为2/3
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OC1Init(TIM2, &TIM_OCInitStructure);
TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable);
TIM_Cmd(TIM2, ENABLE); // 启动定时器2
TIM_CtrlPWMOutputs(TIM2, ENABLE); // 使能PWM输出
2 设计程序,使用定时器 TIMER2 的通道 CHANNEL_1 实现输入捕获。
TIM_ICInitTypeDef TIM_ICInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); // 使能TIM2时钟
// 配置TIMER2为输入捕获模式
TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; // 上升沿触发
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
TIM_ICInitStructure.TIM_ICFilter = 0x0;
TIM_ICInit(TIM2, &TIM_ICInitStructure);
TIM_Cmd(TIM2, ENABLE); // 启动定时器2
TIM_ITConfig(TIM2, TIM_IT_CC1, ENABLE); // 使能通道1的输入捕获中断

3.通过定时器TIM3 完成定时功能使 LED 闪烁间隔为 1s,写出定时器初始化函数和中断函数即可。

// 配置定时器TIM3
TIM_TimeBaseStructure.TIM_Period = 9999;
TIM_TimeBaseStructure.TIM_Prescaler = 7199;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

// 定时器TIM3的中断服务程序
void TIM3_IRQHandler(void)
{
    if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
    {
        GPIOC->ODR ^= GPIO_Pin_13; // 翻转LED的状态
        TIM_ClearITPendingBit(TIM3, TIM_IT_Update); // 清除中断标志位
     }
 }

其他试题:

stm32嵌入式系统与应用习题 2-CSDN博客

stm32嵌入式系统与应用习题1-CSDN博客

stm32嵌入式系统与应用习题3-CSDN博客

stm32嵌入式系统与应用习题4-CSDN博客

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值