OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5462|回复: 7

stm8 串口空闲中断怎么做?

[复制链接]

21

主题

52

帖子

0

精华

高级会员

Rank: 4

积分
583
金钱
583
注册时间
2015-2-2
在线时间
76 小时
发表于 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; // 打开 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6661
金钱
6661
注册时间
2016-5-29
在线时间
909 小时
发表于 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;
         }


}

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


回复

使用道具 举报

头像被屏蔽

5

主题

91

帖子

0

精华

禁止访问

积分
195
金钱
195
注册时间
2017-12-20
在线时间
24 小时
发表于 2017-12-20 16:16:39 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

21

主题

52

帖子

0

精华

高级会员

Rank: 4

积分
583
金钱
583
注册时间
2015-2-2
在线时间
76 小时
 楼主| 发表于 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
回复

使用道具 举报

21

主题

52

帖子

0

精华

高级会员

Rank: 4

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

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

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

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

不好意思.我不用库.不懂库.
回复

使用道具 举报

21

主题

52

帖子

0

精华

高级会员

Rank: 4

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

使用道具 举报

头像被屏蔽

5

主题

91

帖子

0

精华

禁止访问

积分
195
金钱
195
注册时间
2017-12-20
在线时间
24 小时
发表于 2017-12-21 09:53:55 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 19:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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