完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32F407ZG(参考正点原子)
串口配置 一。 串口操作相关库函数(省略入口参数) void USART_Init(); //串口初始化:波特率,数据字长,奇偶校验,硬件流控以及收发使能 void USART_Cmd();//使能串口 void USART_ITConfig();//使能相关中断 void USART_SendData();//发送数据到串口,DR uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据 FlagStatus USART_GetFlagStatus();//获取状态标志位 void USART_ClearFlag();//清除状态标志位 ITStatus USART_GetITStatus();//获取中断状态标志位 void USART_ClearITPendingBit();//清除中断状态标志 二。 串口配置的一般步骤 串口时钟使能:RCC_APBxPeriphClockCmd(); GPIO时钟使能:RCC_AHB1PeriphClockCmd(); ② 引脚复用映射: GPIO_PinAFConfig(); ③GPIO端口模式设置:GPIO_Init(); 模式设置为GPIO_Mode_AF ④串口参数初始化:USART_Init(); ⑤开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤) NVIC_Init(); USART_ITConfig(); ⑥使能串口:USART_Cmd(); ⑦编写中断处理函数:USARTx_IRQHandler(); ⑧串口数据收发: void USART_SendData();//发送数据到串口,DR uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据 ⑨串口传输状态获取: FlagStatus USART_GetFlagStatus(); void USART_ClearITPendingBit(); 比如 比如这段串口初始化函数 首先 输入 USART_Init,并右键查看其定义; 可以看出需要定义一个(串口号,USART初始化结构体) 注意:IS_USART_ALL_PERIPH(A)翻译过来,就是看括号里的输入值是否在输入范围内,如果是,就返回1,即true。 所以,右键,查看IS_USART_ALL_PERIPH的定义,我们就知道了输入的范围,我们这里用的USART1,则输入USART1; 2. 对于第二个输入量,我们需要定义一个结构体,按照入口函数的样子定义一个, USART_InitTypeDef USART_InitStructure; 3. 这样,当我们输入USART_InitStructure.的时候,后面的结构体内部变量就会提示,一个个点击,并赋值就好了; USART_InitStructure.USART_BaudRate=115200; 同样,你会想,怎么知道输入的应该是115200,或者说你知道是115200,但是不知道是什么格式,和上面的一样,右键USART_Init,并查看其定义; 右键IS_USART_WORD_LENGTH查看其定义,发现可以是USART_WordLength_8b或者是USART_WordLength_9b 上面这段代码看起来也比较清爽; IS_USART_WORD_LENGTH(LENGTH),如果LENGTH在正确的范围内即等于8b或者9b assert_param它的作用就是检测传递给函数的参数是否是有效的参数。 Stm32f4xx_conf.h里的注释说明如下: The assert_param macro is used for function‘s parameters check. * @param expr: If expr is false, it calls assert_failed function * which reports the name of the source file and the source * line number of the call that failed. * If expr is true, it returns no value. assert_param宏用于函数的参数检查。 @param expr:如果expr为false,则调用assert_failed函数,该函数报告源文件的名称和失败的调用的源行号。 如果expr为true,则不返回任何值。 ps: C语言知识:||是逻辑符号或。 是连接符,不是换行,define需要定义都在同一行,而同一行写不下就可以用“”表示连接在同一行里。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1777 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1080 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1678 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
731浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
595浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
554浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 04:55 , Processed in 1.167780 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号