day1:
一、
中断类型码:即中断号,对于不同的中断服务程序用不同的名称记号,以调用该中断服务函数
中断向量:存放中断服务程序的入口地址,一个向量代表的入口地址为4个字节
中断向量表:由于存在多个中断请求,相应有多个中断服务程序,对应需要有多个中断向量来存放这些程序入口地址,为此系统在内存的特定区域安排一张中断像量表,专门存放所有的中断向量,称中断向量表
中断向量 = [中断号 * 4]方括号的含义是内存单元的内容,也就是说,只存储在内存地址0中,绝对开始位置
中断号类似中断名字,中断向量类似户口簿,存放中断号的家庭地址
上电复位是从中断向量表开始执行程序的
set_vector_handler(PORTD_VECTORn ,PORTD_IRQHandler); //将PORTD_IRQHandler写入中断像量表,
发生中断的时候来中断像量表找地址,然后才执行中断服务函数,还可以在misc里面通过取消定义,重新定义的方式写入中断像量表
enable_irq (PORTD_IRQn); //通过中断向量号,使能相应的中断,在armNVIC架构里面定义的函数
二、uart4 //RDRF接收数据寄存器满标志,当 RDRF 为 1 时读 S1,清除 RDRF
void MY_UART4_Handler()
{
char ch;
UARTn_e uratn = UART3;
if(UART_S1_REG(UARTN[uratn]) & UART_S1_RDRF_MASK) //接收数据寄存器满
{
//用户需要处理接收数据
uart_getchar (UART3, &ch); //无限等待接受1个字节
uart_putchar (UART3 , ch); //发送字符串
}
}
void main(void)
{
printf("\nUSART4测试\n");
uart_init(UART4,115200);
set_vector_handler(UART4_RX_TX_VECTORn, MY_UART4_Handler);//将中断服务函数地址传入中断像量表,入口参数中断像量表地址,服务函数地址
enable_irq(UART4_RX_TX_IRQn);//通过中断向量号使能相应中断
uart_rx_irq_en(UART4);
while(1)
{
;
}
}