大学嵌入式系统课程学习记录(四)

作业1

1、编写UART_2串口发送程序时,初始化需要设置哪些参数?

初始化需要设置以下等参数

  1. 波特率:设置通信的速率。
  2. 数据位:指定每个字符中的数据位数。
  3. 停止位:指定每个字符之后停止位的数目。
  4. 校验位:指定用于错误检测的校验位类型。
  5. 流控制:确定是否启用硬件流控制或软件流控制来控制数据流向。
  6. 缓冲区大小:设置发送数据的缓冲区大小,以确保数据不会丢失或溢出。
  7. 中断或轮询模式:确定是使用中断驱动的方式还是轮询方式来发送数据。
  8. 时钟源和频率:设置UART模块的时钟源和频率,以确保通信的稳定性和准确性。

2、假设速度为115200,系统时钟为72MHz,波特率寄存器BRR中的值应该是多少?

当过采样因子为8时:

USARTDIV = 2*72MHz / 115200 = 1250

当过采样因子为16时:

USARTDIV = 72MHz / 115200 = 625

3、中断向量表在哪个文件中?表中有多少项?给出部分截图。

中断向量表在文件\03_MCU\startup\startup_stm32|431rctx.s中,表中共有98项。

4、以下是中断源使能函数,假设中断源为TIM6,将函数实例化(写出各项具体数值)。

寻找中断源的中断号

可以发现TIM6的中断号为54

尝试将该函数实例化:

__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)   //IRQn = 54
{
  if ((int32_t)(IRQn) >= 0)    
  {
    NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
  }

将NVIC->ISER[1]的第22位设为1

5、假设将UART_2和TIM6交换其在中断向量表中的位置和IRQ号, UART_2可以正常中断吗?

可以正常中断。因为中断的处理不依赖于它在向量表中的位置,而是根据IRQ号来识别和处理中断。

作业2

实现UART_2串口的接收程序,当收到字符时:
①在电脑的输出窗口显示下一个字符,如收到A显示B;
②亮灯:收到字符G,亮绿灯;收到字符R,亮红灯;收到字符B,亮蓝灯;收到其他字符,不亮灯。
实现方式:
(1) 用构件调用方式实现;
(2) UART部分用直接地址方式实现(即不调用uart.c中的函数,其他部分如GPIO、中断设置可调用函数)。

主要程序的源码如下:

1.当收到字符时,在电脑的输出窗口显示下一个字符,如收到A显示B;

更新串口后打开串口工具,并输入字符A

可以发现输出窗口输出了A的下一个字符B

继续输入字符进行实验

发现可以正确输出每个字符的下一位,该项功能顺利完成。

2.亮灯:收到字符G,亮绿灯;收到字符R,亮红灯;收到字符B,亮蓝灯;收到其他字符,不亮灯。

发送字符G

亮绿灯

发送字符R

亮红灯

发送字符B

亮蓝灯

发送其他字符A

灯不亮

顺利实现了该项功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值