完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这是本人第一次接触STM8S单片机,所以记录一下,方便日后查找。
正文 Uart2串口作为STM8S的标准串口之一,它的作用就是以有线连接的方式为STM8S单片机提供对外通讯的通道。 初始化 要想使用串口的第一步就是要完成对串口相关引脚的初始化以及串口本身的初始化。 具体代码如下: GPIO_DeInit(GPIOD); GPIO_Init(GPIOD, GPIO_PIN_5, GPIO_MODE_IN_PU_NO_IT); GPIO_Init(GPIOD, GPIO_PIN_6, GPIO_MODE_IN_FL_NO_IT); UART2_DeInit(); UART2_Init(115200, UART2_WORDLENGTH_8D, UART2_STOPBITS_1, UART2_PARITY_NO, UART2_SYNCMODE_CLOCK_DISABLE, UART2_MODE_TXRX_ENABLE); UART2_Cmd(ENABLE); UART2_ITConfig(UART2_IT_RXNE_OR,ENABLE); enableInterrupts(); 以上代码我会逐句解释: GPIO_DeInit() 用来将关于通用IO口的寄存器置为缺省值,即初始值 GPIO_Init() 用来设置通用IO口的模式,其中前两个参数用来指明具体是哪个通用IO口,第三个参数说明将该GPIO初始化为何种模式。关于模式的具体定义可以参考数据手册或者进入下面的链接: 链接:link UART2_DeInit() 同样将串口的相关配置初始化为缺省值 UART2_Init() (这个初始化函数的参数列表真的是我见过的最长的。。。) 相关参数: 115200:波特率 UART2_WORDLENGTH_8D:字长8位 UART2_STOPBITS_1:停止位一位 UART2_PARITY_NO:奇偶校验 UART2_SYNCMODE_CLOCK_DISABLE:同步模式 UART2_MODE_TXRX_ENABLE:收发使能 UART2_Cmd(ENABLE):UART2使能 UART2_ITConfig(UART2_IT_RXNE_OR,ENABLE):使能中断接收 enableInterrupts():使能全局中断 接收发送数据 当完成以上初始化后,就可以进入收发数据的环节了 数据发送 库函数提供了最基本的发送函数: UART2_SendData8() 不过想直接应用到代码中,你极有可能可能会掉坑而且摔得不轻 以我惨痛的经历敬告大家: 如果不想自己的数据被发送的支离破碎,惨不忍睹的话,请将发送函数UART2_SendData8()包含到自定义发送函数中,例如: void Send(uint8_t Data) { while((UART2_GetFlagStatus(UART2_FLAG_TXE)==RESET)); UART2_SendData8(Data); while((UART2_GetFlagStatus(UART2_FLAG_TC)==RESET)); } while((UART2_GetFlagStatus(UART2_FLAG_TXE)==RESET)):等待发送寄存器为空 UART2_FLAG_TXE是代表发送寄存器为空的标志 while((UART2_GetFlagStatus(UART2_FLAG_TC)==RESET)):等待传输完成 UART2_FLAG_TC是代表发送完成的标志 数据接收 这个也有基本函数UART2_ReceiveData8() 虽然这个不用顾及标志位的问题,但是这个要考虑中断的问题,上面提到的Uart2的中断使能以及全局开中断都是为了能及时顺利接收数据。 所以一般接收函数都要放到位于stm8s_it.c文件下: INTERRPUT_HANDLER(UART2_RX_IRQHandler, 21) { /* In order to detect unexpected events during development, it is recommended to set a breakpoint on the following instruction. */ } 顺带提一句,所有的中断处理函数都在stm8s_it.c这个文件中,例如TIM,I2C,ADC等。 |
|
|
|
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2955 浏览 16 评论
3455 浏览 1 评论
8987 浏览 16 评论
4050 浏览 18 评论
1102浏览 3评论
570浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
568浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2301浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1857浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 22:55 , Processed in 1.043525 second(s), Total 78, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号