STM32F030CCT6串口3使用总结
【前提】
实际应用中,芯片型号为STM32F030CCT6,串口1用于模组通讯,串口2用于仪表通讯,串口3用于调试,log输出
串口1配置
void USART1_Config(u32 baud)
{GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);//开启时钟RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_1); //引脚复用配置GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_1); USART_InitStructure.USART_BaudRate = baud; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Tx|USART_Mode_Rx; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_WordLength = USART_WordLength_8b;USART_InitStructure.USART_Parity = USART_Parity_No;USART_Init(USART1,&USART_InitStructure);USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);USART_Cmd(USART1, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9| GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //复用模式 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽输出GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //串口的应用波特率最大115200.2M足够,既省电噪声也小 GPIO_Init(GPIOA, &GPIO_InitStructure); NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPriority = 0;NVIC_Init(&NVIC_InitStructure);
}
串口2配置
方式类似,此处省略…
串口3配置
void USART3_Config(u32 baud)
{GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd( RCC_APB1Periph_USART3, ENABLE);RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);GPIO_PinAFConfig(GPIOB, GPIO_PinSource10, GPIO_AF_4); //引脚复用配置GPIO_PinAFConfig(GPIOB, GPIO_PinSource11, GPIO_AF_4); USART_InitStructure.USART_BaudRate = baud; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Tx|USART_Mode_Rx; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_WordLength = USART_WordLength_8b;USART_InitStructure.USART_Parity = USART_Parity_No;USART_Init(USART3,&USART_InitStructure);USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);USART_Cmd(USART3, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10| GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //复用模式 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽输出GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_InitStructure.NVIC_IRQChannel = USART3_6_IRQn;NVIC_InitStructure.NVIC_IRQChannelPriority = 2;NVIC_Init(&NVIC_InitStructure);
}
注意事项
- 开启引脚复用功能时,引脚为 GPIO_PinSourcex,不是 GPIO_pins_define,否则串口会配置失败,进入硬件中断,习惯使用STM32F103系列的,这里很容易出错
GPIO_PinAFConfig(GPIOB, GPIO_PinSource10, GPIO_AF_4);
- 启动文件要选择startup_stmf030xc.s
中断向量表中有USART3_6_IRQHandler,否则产生中断时找不到中断入口地址
注:startup_stmf030.s中没有USART3_6_IRQHandler
- 需要打开STM32F030xC宏定义,才会有中断向量USART3_6_IRQn的定义
方式1:在stm32f0xx.h中打开注释 #define STM32F030xC
方式2:在工程魔法棒中添加
5. 因为串口3-6共用一个中断函数,当进入中断时,需要判断具体哪个串口
void USART3_6_IRQHandler(void)
{if(USART_GetITStatus(USART3, USART_IT_RXNE) == SET){USART3_ReceiveLongData();USART_ClearFlag(USART3,USART_FLAG_RXNE);}
}
6.在进行串口配置时,最好先初始化串口再进行IO口配置,串口没初始化前可能有浮空电平,导致设备刚上电时串口乱发数据的问题
STM32F030CCT6串口3使用总结相关推荐
- python第三方库之学习pyserial库--串口通信
pyserial串口通信库 1.安装pyserial库 2.填写串口参数的注意事项 3.简单封装一下 4.碰到的bug 1.安装pyserial库 pip install pyserial versi ...
- 【嵌入式】openmv与stm32的串口通信
参考:(文中部分图/文字/代码来自以下文章,部分内容由于时间久远已经找不到原作者,可联系注明或删除) PYTHON串口数据打包发送STM32接收数据解析 openmv中文文档 这里以openmv循迹代 ...
- Android 串口通讯 获取卡号
首先你的andoridstudio 需要配置ndk 环境 然后在去下载谷歌的的demo 下载地址 把这些直接复制到代码中 一般 jni C语言调用java 是指定包名调用的 所有android_se ...
- 51单片机 小车 L298N pwm调速 串口控制 按键控制
难点:1.串口定时器T1,和T0定时器优先级 2.pwm频率与占空比的设置 按键控制 按键1--前进 按键2--后退 按键3--加速 按键4--减速 (板子上只有四个按键) 串口控制 '1'--前进 ...
- VC串口通信编程-2
VC串口通信编程 (2009-07-08 13:48:40) 转载▼ Win32串口编程(转:韩耀旭) 在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信.串口通信 ...
- pci串口驱动安装失败_TSC TTP-243E Pluse装LTP并口驱动无法安装
一.前言描述 接到客户报修说,电脑无法开机,即到哥上门维修立即安排人员到现场查看原因,到现场后,查看的确是电脑系统问题,重新安装系统,安装完成系统后,发现打印机无法使用.这个打印机型号是TSC TTP ...
- rs232串口驱动_LED驱动电路设计
这里设计了两种方案,方案一目标需要低功耗的led,方案二目标需要高功耗的LED.这里重点说下第一种方案,方案电路图如图所示.LED直接通过一个上拉排阻将8个LED连接在单片机上,这样的优点是电路结构简 ...
- 3.实现串口功能及消息邮箱
提醒: 如果您是完全按照<1.一步一步移植ucos到stm32f103开发版(修订版)>来新建的工程的话,那很遗憾,你要重新建立一个工程,因为,在那篇文章的步骤1中,我们选中了GPIO,但 ...
- xk3190串口通讯JAVA开发包_常用品牌plc通讯协议汇总学习
一.美系厂家Rockwell ABRockwell的PLC主要是包括:PLC2.PLC3.PLC5.SLC500.ControlLogix等型号,PLC2和PLC3是早期型号,现在用的比较多的小型PL ...
最新文章
- 弹性分组环(RPR)技术特点及其在城域网中的应用
- PostgreSQL流复制之二:pgpool-II实现PostgreSQL数据库集群(转发+整理)
- java中先序创建一棵树,恳求大佬指点!!!首先标明空子树的先根遍历序列建立一棵二叉树...
- apple air装双系统(win7)
- 学习进度条——第八周
- cname 别名记录 解析过程_云解析是什么?需要购买吗?
- oracle 用户禁止登录,[转] oracle限制用户在某个时间段内禁止登录数据库
- TCP/IP学习(30)——L2数据链路层的数据包处理详细流程
- 关于汉语转换拼音的组件
- tensorrt之tensorrtx编译:遇到的错误提示
- 190208每日一句
- SVM-支持向量机算法概述
- 计算机io设备是cpu控制的吗,I/O控制器及控制方式,了解一下
- mysql存储包含单引号英文字符串,SQL中写入包含有英文单引号“ '' ”失败问题深入详解...
- dom4j解析xml格式字符串获取标签属性和内容
- 暗黑破坏神3 夺魂之镰曝光“威斯特玛”城背景
- 吴裕雄--天生自然 诗经:古朗月行
- 远程计算机网络会议有哪些优缺点,远程会议
- 计算机与网络技术基础
- 蝴蝶飞舞(butterfly)
热门文章
- 一个总经理的11个经典面试问题 (转载)
- 英国普利茅斯大学:量子计算机与脑机接口的“相生相克”
- hadoop读写mysql数据库
- sunday算法特征码_sunday 算法
- 基于ADI-DSP-1452外挂flash模拟声浪功能调试
- win32 运行ucosii移植lwip2.1.2问题记录
- 【数据采集】获取网站数据(二)
- python os.walk 指定遍历深度_python遍历文件夹,指定遍历深度与忽略目录的方法
- 为什么要学Python编程?(附Python学习路线)
- c c++操作windows的注册表项