stm32串口通信
来源:互联网 发布:mysql workbanch 编辑:程序博客网 时间:2024/06/05 15:36
stm32串口通信主要是配置相应的参数:
1、初始化串口引脚:
void usartGPIOConfigure(void)
{
GPIO_InitTypeDef gpio_init;gpio_init.GPIO_Pin = GPIO_Pin_9; // TXgpio_init.GPIO_Speed = GPIO_Speed_50MHz;gpio_init.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_Init(GPIOA, &gpio_init);gpio_init.GPIO_Pin = GPIO_Pin_10; //RXgpio_init.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA, &gpio_init);
}
2、初始化串口的一些参数:
void usartConfigure(void)
{
USART_InitTypeDef usart_init; usart_init.USART_BaudRate = 9600; usart_init.USART_WordLength = USART_WordLength_8b; usart_init.USART_StopBits = USART_StopBits_1; usart_init.USART_Parity = USART_Parity_No; usart_init.USART_HardwareFlowControl = USART_HardwareFlowControl_None; usart_init.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, &usart_init); USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); //使能接收中断。// USART_ITConfig(USART1, USART_IT_TXE, ENABLE); //发送中断 USART_Cmd(USART1, ENABLE); USART_ClearFlag(USART1, USART_FLAG_TC);
}
3、初始化串口时钟:
void usartRccInit(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
}
4、初始化中断相关参数(如中断优先级、中断组等等):
void nivcConfiguration(void)
{
NVIC_InitTypeDef nvic_init;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); nvic_init.NVIC_IRQChannel = USART1_IRQn;nvic_init.NVIC_IRQChannelPreemptionPriority = 0;nvic_init.NVIC_IRQChannelSubPriority = 2;nvic_init.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&nvic_init);
}
5、实现中断函数:
void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1,USART_IT_RXNE) != RESET){ USART_SendData(USART1, USART_ReceiveData(USART1)); while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) ==RESET);}
}
6、最后实现一个简单的printf函数:
void usartPrintf(char *fmt,…)
{
va_list ap;char string[256];va_start(ap,fmt);vsprintf(string,fmt,ap);putStr(string);va_end(ap);
}
void putStr(char *str){
while(*str != '\0'){ USART_SendData(USART1, *str++); while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);}
注:实现的printf函数需要包含头文件:
*#include "stdio.h"**#include "stdarg.h"*
7、总结:stm32编程基本步骤:
1、使能相应的引脚2、配置参数(如usart的通信参数)3、配置中断4、使能时钟5、实现中断处理函数
阅读全文
0 0
- STM32的串口通信
- STM32 串口USART 通信
- stm32串口间通信
- stm32串口通信
- STM32----------串口通信(USART)
- stm32-8串口通信
- STM32串口通信
- stm32串口通信
- STM32串口通信
- STM32之串口通信
- STM32 --UART串口通信
- stm32串口通信
- stm32串口通信
- stm32与串口通信
- STM32串口通信:串口通信库
- STM32串口通信程序设计要点
- STM32串口通信程序设计要点
- STM32串口多机通信
- spring mvc DispatcherServlet详解之前传---前端控制器架构
- 2017.08.08 B组解题报告
- 小程序与H5,APP有什么不同-小程序支付开发1
- VS调试查看寄存器学习总结
- c++知识总结(3)
- stm32串口通信
- Noip 2014 提高组 寻找道路
- sqlserver实现层级树形查询
- python生成ios固定代码模块脚本打包成exe文件
- 损失函数改进方法总览
- Linux 平台安装Oracle Database 12c
- java基础学习总结——equals方法
- sc测试四 赛后感受
- 一步步教你Hadoop多节点集群安装配置