完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
使用STM32标准库文件
步骤: 1.初始化时钟 2.初始化GPIO 3.初始化中断配置(如果需要中断) 4.中断服务函数(如果使用中断) 配置STM32F1038B的SUART2串口
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
GPIOA_usart2_Init.GPIO_Mode=GPIO_Mode_AF_PP; GPIOA_usart2_Init.GPIO_Pin=GPIO_Pin_2; GPIOA_usart2_Init.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIOA_usart2_Init); GPIOA_usart2_Init.GPIO_Mode=GPIO_Mode_IN_FLOATING; GPIOA_usart2_Init.GPIO_Pin=GPIO_Pin_3; GPIOA_usart2_Init.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIOA_usart2_Init);
不使用硬件流控制 接收发送模式 没有奇偶校验位 停止位1位 数据字长8位 使能USART2串口 使用接收RXNE中断 USART2_Init.USART_BaudRate=115200; USART2_Init.USART_HardwareFlowControl=USART_HardwareFlowControl_None; USART2_Init.USART_Mode=USART_Mode_Rx | USART_Mode_Tx; USART2_Init.USART_Parity=USART_Parity_No; USART2_Init.USART_StopBits=USART_StopBits_1; USART2_Init.USART_WordLength=USART_WordLength_8b; USART_Init(USART2,&USART2_Init); USART_Cmd(USART2,ENABLE);
USART2_IRQn通道在STM32f10x.h中定义 NVIC_usart2_Init.NVIC_IRQChannel=USART2_IRQn; NVIC_usart2_Init.NVIC_IRQChannelCmd=ENABLE; NVIC_usart2_Init.NVIC_IRQChannelPreemptionPriority=0; NVIC_usart2_Init.NVIC_IRQChannelSubPriority=0; NVIC_Init(&NVIC_usart2_Init);
void USART2_IRQHandler(){ unsigned int Receive; if(USART_GetITStatus(USART2,USART_IT_RXNE) == 1) { if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) { Receive =USART_ReceiveData(USART2); if((USART_RX_STA&0x8000)==0) { if(USART_RX_STA&0x4000) { if(Receive!=0x0a)USART_RX_STA=0; else USART_RX_STA|=0x8000; } else { if(Receive==0x0d)USART_RX_STA|=0x4000; else { USART_RX_BUF[USART_RX_STA&0X3FFF]=Receive; USART_RX_STA++; if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0; } } } } }} 此协议定义了变量USART_RX_STA其中0-14位为记录传输数据的字节长度 15位为是否接收到0X0D位 若接收到则程序置1 16位为是否接收到0X0A位 若接收到则程序置1 若收到0X0D却未收到0X0A则接受错误 若收到0X0D且收到0X0A则接收成功 变量USART_RX_BUF[USART_REC_LEN]为数据接收缓冲区 若需做什么操作可在检查接收完成后或重定义等待时间或检测缓冲区满后操作。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
4191 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
3255 浏览 1 评论
2787 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
2219 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
15105 浏览 2 评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
3156浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
1933浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
2101浏览 3评论
2014浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
2206浏览 3评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-11 03:40 , Processed in 0.623723 second(s), Total 43, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1592