OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 338|回复: 7

stm8 串口空闲中断怎么做?

[复制链接]

  离线 

19

主题

50

帖子

0

精华

高级会员

Rank: 4

积分
520
金钱
520
注册时间
2015-2-2
在线时间
65 小时
发表于 2017-12-20 13:07:40 | 显示全部楼层 |阅读模式
1金钱
stm8 串口空闲中断怎么配置????急求!!!!各位请多帮助

最佳答案

查看完整内容[请看2#楼]

//串口空闲中断,我来给你一个完美的初始化程序. #define uc unsigned char void init_uart(void) { #ifdef UART_EN #define SYSTIME_CLK 16000000 #define UART_RATE 256000 #define AAAA (SYSTIME_CLK/UART_RATE) UART1_BRR2 = (uc ) ((AAAA>>8)&0X00F0)|(AAAA&0X000F); UART1_BRR1 = (uc)((AAAA 8); UART1_CR2 = 0x3C; // 打开 ...
回复

使用道具 举报

  离线 

22

主题

1494

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3368
金钱
3368
注册时间
2016-5-29
在线时间
501 小时
发表于 2017-12-20 13:07:41 | 显示全部楼层
本帖最后由 操作系统 于 2017-12-20 17:04 编辑

//串口空闲中断,我来给你一个完美的初始化程序.

#define uc unsigned char

void init_uart(void)
{
#ifdef UART_EN
#define SYSTIME_CLK 16000000
#define UART_RATE   256000
#define AAAA   (SYSTIME_CLK/UART_RATE)


                        UART1_BRR2 = (uc ) ((AAAA>>8)&0X00F0)|(AAAA&0X000F);
                        UART1_BRR1 = (uc)((AAAA <<4)>>8);
                        UART1_CR2 = 0x3C;  // 打开发送,打开接收,接收中断,空闲中断打开
                        UART1_CR1  = 0;

#endif

}

// 中断服务程序

#pragma vector = VECTOR_UART1_RX
__interrupt void uart_rx(void)
{

volatile uc t;
t=  UART1_SR;
if(t & bit4)
         {// 空闲中断发生了.产生事件标志位,以在大循环查询处理
            me.uartRecFlag = 1;
           t = UART1_DR;
         }
else
         {
       uartBuf[uartRecDataLen++] =  UART1_DR;
         }


}

//其它的必要的声明什么的.自己加上


深圳富美莱怡家智能科技有限公司
主营:可视对讲,智能家居安防,灯光控制,空调控制
智能门窗,门锁.
回复

使用道具 举报

  离线 

3

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2017-12-20
在线时间
6 小时
发表于 2017-12-20 16:16:39 | 显示全部楼层
什么是串口空闲中断?
我刚学STM8,以前用过51单片机,知道有串口数据发送完成中断,串口数据接收完成中断,没有听说过还有串口空闲中断,是STM8特有的功能吗?
回复

使用道具 举报

  离线 

19

主题

50

帖子

0

精华

高级会员

Rank: 4

积分
520
金钱
520
注册时间
2015-2-2
在线时间
65 小时
 楼主| 发表于 2017-12-20 17:50:58 | 显示全部楼层
操作系统 发表于 2017-12-20 17:01
//串口空闲中断,我来给你一个完美的初始化程序.

#define uc unsigned char

十分感谢,但我用的是库,所以请教一下初始化是 UART1_ITConfig(UART1_IT_IDLE, ENABLE);
反馈数据是这个吗?
ITStatus its;
its = UART1_GetITStatus(UART1_IT_IDLE);
//its=RESET or SET
回复

使用道具 举报

  离线 

19

主题

50

帖子

0

精华

高级会员

Rank: 4

积分
520
金钱
520
注册时间
2015-2-2
在线时间
65 小时
 楼主| 发表于 2017-12-20 17:55:28 | 显示全部楼层
595953427 发表于 2017-12-20 16:16
什么是串口空闲中断?
我刚学STM8,以前用过51单片机,知道有串口数据发送完成中断,串口数据接收完成中断 ...

就是我们平时串口接受的模式是一个字节一次中断,而接受一串字节时,我们可以通过空闲中断来判断,一次性接受完毕
回复

使用道具 举报

  离线 

22

主题

1494

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3368
金钱
3368
注册时间
2016-5-29
在线时间
501 小时
发表于 2017-12-20 18:31:32 | 显示全部楼层
虎神 发表于 2017-12-20 17:50
十分感谢,但我用的是库,所以请教一下初始化是 UART1_ITConfig(UART1_IT_IDLE, ENABLE);
反馈数据是这 ...

不好意思.我不用库.不懂库.
深圳富美莱怡家智能科技有限公司
主营:可视对讲,智能家居安防,灯光控制,空调控制
智能门窗,门锁.
回复

使用道具 举报

  离线 

19

主题

50

帖子

0

精华

高级会员

Rank: 4

积分
520
金钱
520
注册时间
2015-2-2
在线时间
65 小时
 楼主| 发表于 2017-12-20 18:41:35 | 显示全部楼层
不过还是谢谢你
回复

使用道具 举报

  离线 

3

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2017-12-20
在线时间
6 小时
发表于 2017-12-21 09:53:55 | 显示全部楼层
虎神 发表于 2017-12-20 17:55
就是我们平时串口接受的模式是一个字节一次中断,而接受一串字节时,我们可以通过空闲中断来判断,一次性 ...

还有这功能?好像很好用的样子。哪天试一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-1-21 01:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表
/* */