1、编写UART_2串口发送程序时,初始化需要设置哪些参数?
(1)确定MCU串口号、所接MCU的引脚。
采用的串口为UART_2,但在程序中不直接使用这个串口名,而是在user.h中宏定义使用的串口名为UART_User,以便增强编程的可移植性。
(2)确定串口UART_User的波特率,在main.c中,对其初始化。 uart_init(UART_User,115200); //初始化串口模块
2、假设速度为115200,系统时钟为72MHz,波特率寄存器BRR中的值应该是多少?
根据过采样模式的不同结果不同
如果过采样模式为0(系数为16):625
如果过采样模式为1(系数为8):1250
3、中断向量表在哪个文件中?表中有多少项?给出部分截图。
STM32L431的中断向量表在startup_stm32l431rctx.s 中。
表中有99个中断,前16个为内核中断,后面的为非内核中断。
4、以下是中断源使能函数,假设中断源为TIM6,将函数实例化(写出各项具体数值)。
查找IRQ号,取32模得置位
得TIM6的IRQ号为54,取32模得22,应该在ISER[1]的第22位设置为1
5、假设将UART_2和TIM6交换其在中断向量表中的位置和IRQ号, UART_2可以正常中断吗?
可以,中断号的改变不影响中断控制器NVIC的配置,只是改变了中断向量表中的终端函数入口地址
6、实现UART_2串口的接收程序,当收到字符时: ①在电脑的输出窗口显示下一个字符,如收到A显示B; ②亮灯:收到字符G,亮绿灯;收到字符R,亮红灯;收到字符B,亮蓝灯;收到其他字符,不亮灯。
实现方式:
1、用构件调用方式实现;
声明
主程序:
2、UART部分用直接地址方式实现(即不调用uart.c中的函数,其他部分如GPIO、中断设置可调用函数)。
功能等同uart_re1接收字节
功能等同uart_send1发送字节