下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、stm32-usart2学习笔记 stm32学习笔记之usart2篇 usart2位于apb1总线 学习环境: stm32芯片:stm32f103vbt6 开发板:万利stm3210b-lk1 usart2引脚 pd5usart2 tx, pd6usart2 rx (重定义引脚) 1、usart2与pc通信 (usart2发送) 首先需要对usart2配置,因为在万利板子上的usart2进行了重映射,因此配置跟usart1有区别开启gpiod以及afio时钟,开启usart2时钟 rcc_apb2periphclockcmd(rcc_apb2periph_gpiod | rcc_apb2per
2、iph_afio, enable); rcc_apb1periphclockcmd(rcc_apb1periph_usart2, enable); /usart2在apb1总线 配置usart2的tx(pd5)以及rx(pd6)引脚 先进行定义结构体变量,用来配置相应引脚的速度以及输入输出模式 gpio_inittypedef gpio_initstructure; 进行usart2的重映射配置 gpio_pinremapconfig(gpio_remap_usart2, enable); /usart2重映射 配置usart2的rx(pd6)引脚 gpio_initstructure.gpi
3、o_pin = gpio_pin_6; gpio_initstructure.gpio_mode = gpio_mode_in_floating; /浮空输入 gpio_init(gpiod, 配置usart2的tx(pd5)引脚 gpio_initstructure.gpio_pin = gpio_pin_5; gpio_initstructure.gpio_speed = gpio_speed_50mhz; gpio_initstructure.gpio_mode = gpio_mode_af_pp; /复用推挽输出 gpio_init(gpiod, 配置usart1的波特率、数据位数、停
4、止位、校验以及硬件流控制 首先定义结构体变量 usart_inittypedef usart_initstructure; usart_initstructure.usart_baudrate = 9600; /波特率-9600 usart_initstructure.usart_wordlength = usart_wordlength_8b; /数据位数-8位 usart_initstructure.usart_stopbits = usart_stopbits_1; /停止位1位 usart_initstructure.usart_parity = usart_parity_no; /无
5、校验 usart_initstructure.usart_hardwareflowcontrol = usart_hardwareflowcontrol_none; /无硬件流控制 usart_initstructure.usart_mode = usart_mode_rx | usart_mode_tx; usart_init(usart1, 使能usart1 usart_cmd(usart1, enable); 通过上面四个步骤的操作,即可完成对usart2的配置。usart2于usart1的配置区别主要在与第步,因为万利板子的usart2进行了重映射,所以在配置usart2外设时钟时,除
6、了开启gpiod端口时钟外,还需要开启afio复用功能时钟;因为usart2位于apb1总线,因此配置usart2的时钟函数也与配置usart1的时钟函数不同。 (1)利用stm32固件库函数实现usart2向pc发送数据 实现usart1配置后,即可实现串口通信功能,在此下面程序实现了usart1串口发送功能 cpu_int08u txbuffer = txbuffer为usart1准备发送到pc的字符串,此发送程序通过ucos-ii建立任务实现,发送函数使用stm32固件库v2.0中的发送函数实现,任务程序如下 static void taskusart2(void* pdata) cpu
7、_int08u txcounter = 0; pdata = pdata; while(1) while(txcounter usart_senddata(usart2, txbuffertxcounter+); /串口发送函数,发送数据 while(usart_getflagstatus(usart2, usart_flag_txe) = reset) /等待发送寄存器为空 txcounter = 0; ostimedly(os_ticks_per_sec); /延时实现任务切换 2、usart2与pc串口通信(stm32串口接收,使用中断实现) usart具有10个中断源,只有一个接口连接
8、到中断控制器(usart的各种中断事件被连接到同一个中断向量),因此在进入中断时需要软件判断发生的是哪个中断。 usart1串口配置前三步如上节所述,接下来配置串口使能中断 usart_itconfig(usart2, usart_it_rxne, enable); /使能接收数据寄存器不为空产生中断 usart_cmd(usart2, enable); /使能串口usart2 配置nvic void nvic_configuration(void) nvic_inittypedef nvic_initstructure; /* configure the nvic preemption pr
9、iority bits */ nvic_prioritygroupconfig(nvic_prioritygroup_0); /无抢占式优先级 /* enable the usart2 interrupt */ nvic_initstructure.nvic_irqchannel = usart2_irqchannel; nvic_initstructure.nvic_irqchannelsubpriority = 0; /子优先级设置为零 nvic_initstructure.nvic_irqchannelcmd = enable; nvic_init( 至此以上几步实现了usart2的串口
10、中断接收配置,接下来在中断函数中写代码实现中断接收,以及将接收成功的字符发送到pc,在pc端利用串口助手进行监视接收是否成功。 程序利用ucos-ii内核实现,使用的ucos-ii版本v2.86,将usart2串口中断函数写在app_vect_v5.c 文件中,根据此c文件中开始部分的定义 因此在app_vect_v5.c文件中编写的usart1中断函数如下 static void bsp_inthandlerusart2 (void) /此处名称必须与app_vect_v5.c开头定义部分相同,否则不能实现中断,此处的bsp_inthandlerusart2可能为usart2的中断入口 cp
11、u_int08u usart2rxdata; if(usart_getitstatus(usart2, usart_it_rxne) != reset)/判断是否产生中断 usart_clearitpendingbit(usart2, usart_flag_rxne);/产生中断,清除中断标志 usart2rxdata = usart_receivedata(usart2); /接收串口数据 usart_senddata(usart2, usart2rxdata); /发送串口数据 配置总结: ? 配置并使能时钟 配置usart2时钟 rcc_apb1periphclockcmd(rcc_apb1periph_usart2, enable); 配置系统时钟,配置使用到得gpio口时钟(usart2用到gpiod口), rcc_apb2periphclockcmd(rcc_apb2periph_gpiod, enable); 因为此处的usart2引脚使用的是重映射的gpio口,所以需要配置a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 改善就医感受提升患者体验主题活动工作总结
- XX建筑工程有限公司预算科长岗位职责
- 偏瘫肢体健康模版
- 健康宣教我先行
- 劳动安全监察指南讲解
- AI辅助自闭症治疗
- 中医康复科健康讲座-1
- 查房健康指导
- 多方参与安全机制讲解
- 材料工程师职业发展指南
- 酒店防汛备汛应急预案总结
- 制程无有害物质识别及风险评估表
- 小学英语be动词的用法详细讲解课件(微课)
- 旋挖灌注桩旁站记录
- 《网络综合布线》教案
- 2022-2023学年广州市增城区数学四下期末教学质量检测试题含解析
- 《小数的初步认识》单元作业设计
- 一级注册计量师课件下
- DB14-T 2561-2022 食品经营(餐饮)企业落实食品安全主体责任通用要求
- GB/T 12465-2017管路补偿接头
- 护士的心理健康与自我调适
评论
0/150
提交评论