您的位置:首页 > 其它

stm32的复用和中断

2017-04-26 09:21 239 查看
stm32中通过结构体将寄存器组织在一起,通过修改结构体成员变量的值就可以达到操作对应寄存器的值。这些都是在stm32f4xx.h文件中完成的。

STM32的GPIO的复用功能:GPIO的基本功能是普通的IO,STM32有自己的各个功能模块,这些内置外设的外部引脚与标准GPIO复用,作为这些模块的功能引脚,就叫复用。

更通俗的讲,GPIO最普通应用为IO口,通过配置寄存器将它设置成串口、并口、模数口等。

1 要使用IO复用功能外设,必须先打开相应地IO口时钟和复用功能时钟外设。

   如 USART1接PA9 、PA10,需要使能GPIOA  ,USART1

2 需要将GPIOA中的MODER寄存器中的IO口(PA9 PA10)配置为复用功能。

3  对IO口的其他参数进行配置。

4 配置GPIOA_AFRL和GPIOA_AFRH寄存器,将IO连接到所需要的AFx。

对于库函数,调用函数GPIO_PinAFConfig函数来实现。

GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);   //  第三个参数确定IO到底复用为哪种功能。

中断管理

中断管理函数主要是在misc.c文件中。   // 在库函数中,利用函数操作寄存器的位数

1  中断优先级分组:分组的设置是由SCB-->AIRCR寄存器的bit8~10来定义的,如组设置3,则3位抢占优先级(000 001 010 011 100 101 110 111 7位0~7可选),1位响应优先级(0   1 两位可选);抢占优先级高于响应优先级,数值越小所代表的优先级就越高。

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

2   中断初始化函数NVIC_Init.

3   使能相应地中断

     使能串口中断的函数:void  USART _ITConfig(USART_TypeDef* USARTx,uint16t_t  USART_IT,FunctionState  NewState );

      如:接收到数据(RXNE读数据寄存器非空),我们要产生中断,则开启中断的方式为:

USART_ITConfig(USART1,USART_IT_RXNE,ENABLE).

4   使能串口

使能串口通过调用函数USART_Cmd(USART1,ENABLE);

5  获取相应中断状态

在使能了某个中断后,当中断发生时,需要在中断处理函数中调用获取中断函数判断是否发生中断。

void USART_GetITStatus(USART1,USART_IT_TC);   //判断是否 串口发送完成  产生中断

6 编写中断处理函数

void USART1_IRQHandler(void);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: