串口中断初始化的代码如下:
NVIC_InitTypeDef NVIC_InitStructure;
/* Configure the NVIC Preemption Priority Bits */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); //设置优先级分组:先占优先级0位,从优先级4位
//设置向量表的位置和偏移
#ifdef VECT_TAB_RAM
/* Set the Vector Table base location at 0x20000000 */
NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); //向量表位于RAM
#else /* VECT_TAB_FLASH */
/* Set the Vector Table base location at 0x08000000 */
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); //向量表位于FLASH
#endif
/* Enable the USARTy Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; //USART1中断
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //中断优先级的设置
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能
NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器USART1
NVIC嵌套向量中断控制器
控制器(Nested Vectored Interrupt Controller The National Vaccine Information Center)
这里涉及到外部中断初始化的一些步骤:
1)取相应的中断
2)设置相应的中断优先级
3)使能相应的中断
4)中断的初始化
在中断服务函数中
中断服务函数是
void USART1_IRQHandler(void)
这些中断函数都是在stm32f10x_it. c中定义的。
通过
USART_ReceiveData(USART1);//读取收到的数据
这个函数接收读取到的数据。
发送主要是通过差询的方式
USART_SendData(COM_USART[COM],(uint8_t) ch);
while(USART_GetFlagStatus(COM_USART[COM], USART_FLAG_TC) == RESET) {}
先是发送字符,再就是等待字符发送完成。
其实操作这些跟操作51单片机差不多。
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』