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号不能正常中断