【二】STM32F4 USART1 中断方式接收再将字符打印出来
来源:互联网 发布:凯聪网络摄像机设置 编辑:程序博客网 时间:2024/05/22 13:52
- void USART1_Config(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- USART_InitTypeDef USART_InitStructure;
- /* config USART1 clock*/
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
- RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
- /* USART1 GPIO config*/
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOB,&GPIO_InitStructure);
- GPIO_PinAFConfig(GPIOB,GPIO_PinSource6,GPIO_AF_USART1);
- GPIO_PinAFConfig(GPIOB,GPIO_PinSource7,GPIO_AF_USART1);
- /* USART1 mode config*/
- USART_InitStructure.USART_BaudRate = 115200;
- USART_InitStructure.USART_WordLength = USART_WordLength_8b;
- USART_InitStructure.USART_StopBits = USART_StopBits_1;
- USART_InitStructure.USART_Parity = USART_Parity_No ;
- USART_InitStructure.USART_HardwareFlowControl= USART_HardwareFlowControl_None;
- USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
- USART_Init(USART1,&USART_InitStructure);
- /*使能中断*/
- USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
- USART_Cmd(USART1, ENABLE);
- }
还需要配置NVIC
void NVIC_Config(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
在以上函数中,NVIC_IRQChannel 是中断源,可以到STM32F4XX.H的140行处找,
第二项Preemption是中断组,中断组之间可以嵌套,0代表最高。
第三项是每个中断组里的中断成员,成员之间区分优先级,但一个组里的不可以嵌套。
第四项代表使能中断。
好了,NVIC配置好了后,就可以在stm32f4xx_it里添加中断服务函数了。
void USART1_IRQHandler(void)
{
char c;
if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==SET)
{
c = USART_ReceiveData(USART1);
USART_SendData(USART1,c);
USART_ClearITPendingBit(USART1,USART_IT_RXNE);
GPIO_ToggleBits(GPIOD,GPIO_Pin_14);
}
}
中断服务函数工作很简单,就是将接收到的数据再通过SendData发送出去。
同时为了便于观察是否进入中断,添加了取反GPIOD14的操作,对应discovery板子上的红色LED。
- 【二】STM32F4 USART1 中断方式接收再将字符打印出来
- STM32通过中断方式实现USART1通信
- 将N进制数以字符打印出来
- C语言写函数实现接收n个字符串,将以某个字符为开头的字符串打印出来。
- arduino将从串口接收到的数据打印出来
- 编写一个程序,要求接收一个数字,程序会将这个数字以二进制方式打印,例如:数字10 , 以1010的方式打印出来
- 32的 USART1 用 DMA 方式发送与接收 转
- 利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
- 【程序27】利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来
- 利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
- 利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来
- 利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来
- c#:输入5个字符,将其倒序打印出来
- 将字符串中不同字符的个数打印出来
- 将字符串中不同字符的个数打印出来
- 将整数以2进制方式打印出来
- stm32f4-discovery USART1 (PA9\PA10不可用)
- 3.字符反转 输入一串字符,比如"abcd",以倒序的方式将它打印出来
- UiViewController生命周期
- H.264句法和语法总结(三)序列参数集层(SPS)句法
- UITabBarController标签栏控制器
- 基于XMPP的IOS客户端开发
- ubuntu12.04设置root登陆界面
- 【二】STM32F4 USART1 中断方式接收再将字符打印出来
- H.264句法和语法总结(四)图像参数集语义
- 如何写一篇好的技术博客
- Deep Learning 应用实例
- c++如何让自定义的类可以执行STL中的sort算法
- C++编程规范之17:避免使用“魔数”
- C语言中的static变量和C++静态数据成员
- H.264句法和语法总结(五)片头句法
- ocp学习随记(八)