广州大学嵌入式——第六章作业一

1、编写UART 2串口发送程序时,初始化需要设置哪些参数?
关闭串口的收发功能
1位起始位,8位数据位
过采样因子设置为16
在CR2中关掉Lin模式、同步时钟
在CR2中设置停止位长度为1
在CR3中,不要smartcard智能卡模式5、不要半双工模式3、不要远红外IrDA模式1
配置波特率因子,系统时钟频率SystemCoreClock/115200
启动串口的收发功能

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

计算公式为:

BRR的值应该为:625
3、中断向量表在哪个文件中?表中有多少项? 给出部分截图

中断向量表在startup stm32143lrctx.s文件中,共有99项

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

可以得出TIM6的中断向量号为70

((uint32_t)IRQn) >> 5UL:这个表达式将中断号右移5位,得到70/32=2,然而地址是从0开始,所以这个位置为NVIC的ISER寄存器1。

表达式变成 NVIC->ISER[1]=(uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));

(uint32_t)(1UL << ((uint32_t)IRQn) & 0x1FUL):这个表达式创建一个只有对应于中断号的位被设置的32位值,得到ISER寄存器中需要设置的位位置:70mod  32=22位。

此时表达式变成:表达式变成 NVIC->ISER[1]=(uint32_t)(1UL << 22);

所以结果为:NVIC的ISER寄存器1中设置第22位。


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

根据STM32L4中断向量表得,UART_2的中断向量号为54。二进制为00110110,右移五位得到1,与0x1F进行按位与操作,得到0001 0110,在左移一位,得0010 1100,只有第6位置为1,其余位保持不变。因此交换位置和IRQ号不能正常中断

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值