你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 11195|回复: 13

大家帮忙看一下,我的板子是STM8的,为什么我的UART接收中断进不了。急。。

[复制链接]

1

主题

10

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2010-11-26 15:15:16 | 显示全部楼层 |阅读模式
我的板子是STM8S系列,发送我采用轮询方式,可以正常发送,接收采用轮询方式,也可以正常接收;但是接收我采用中断方式,不能进入中断。现将我的代码贴出来,希望大家指教下
初始化UART1:
void UART1_Init(u8 nData_Bit, u8 nStop_Bit, u16 nUart_BRR1, u16 nUart_BRR2)
{
 u32 nUartDiv = 0x0;
 
 //初始化UART1寄存器
 UART1->SR = 0xc0;
 UART1->DR = 0x0;
 UART1->BRR1 = 0x0;
 UART1->BRR2 = 0x0;
 UART1->CR1 = 0x0;
 UART1->CR2 = 0x0;
 UART1->CR3 = 0x0;
 UART1->CR4 = 0x0;
 UART1->CR5 = 0x0;
 UART1->GTR = 0x0;
 UART1-&gtSCR = 0x0;
 
 //配置UARTDIV(波特率)
 UART1->BRR1 = nUart_BRR1;
 UART1->BRR2 = nUart_BRR2;
 
 IRQ_SetSoftPriority(18, ITC_IRQ_SOFT_PRIORITY_2);
 //UART1->CR2 = 0x2c;//允许发送和接收,能够产生接收中断
 UART1->CR2 = 0x0c;
 UART1->CR1 |= nData_Bit CR3 |= nStop_Bit CR1 |= 0x0 DR;
 UART1_SendBit((uc8)uRevBit);
}
主函数:
void main(void)
{
 IRQ_Init();
 //LED_Init();
 //KEY_Init();
 //BEEP_Init(BEEP_FREQUENCY_1KHZ);
 CLK_Init();
 UART1_Init(DATA_BIT8, STOP_BIT1, BAND_RATE_9600_BRR1, BAND_RATE_9600_BRR2);
 while (1);
}
回复

使用道具 举报

1

主题

10

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2010-11-26 15:29:11 | 显示全部楼层

RE:大家帮忙看一下,我的板子是STM8的,为什么我的UART接收中断进不了。急。。

热心朋友,出来看看呀,谢谢了。
回复 支持 反对

使用道具 举报

1

主题

10

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2010-11-26 16:06:40 | 显示全部楼层

RE:大家帮忙看一下,我的板子是STM8的,为什么我的UART接收中断进不了。急。。

,没人吗
回复 支持 反对

使用道具 举报

1

主题

10

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2010-11-26 16:45:49 | 显示全部楼层

回复:大家帮忙看一下,我的板子是STM8的,为什么我的UART接收中断进不了。急。。

 兄弟们,我一直在线呀,有知道的朋友,说一声哟
回复 支持 反对

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2010-11-26 17:22:46 | 显示全部楼层

RE:大家帮忙看一下,我的板子是STM8的,为什么我的UART接收中断进不了。急。。

1、你没有开启环形中断
2、你没有配置中断优先级
3、你没有配置中断向量
回复 支持 反对

使用道具 举报

1

主题

10

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2010-11-26 17:46:02 | 显示全部楼层

RE:大家帮忙看一下,我的板子是STM8的,为什么我的UART接收中断进不了。急。。

中断优先级和中断向量我都有加的。但是环形中断是什么,是中断的总开关吗
配置中断向量优先级:
IRQ_SetSoftPriority(ITC_IRQ_UART1_RX,     ITC_IRQ_SOFT_PRIORITY_1);//配置软件优先级为1级
配置中断向量:
{0x82, (interrupt_handler_t)UART1_Rev_IRQHandler}, /* irq18 */
开启环形中断:
enable_IRQ();//打开中断总开关
那位朋友,是这样吗?我之前也是这样做的,不行呀。。
回复 支持 反对

使用道具 举报

1

主题

10

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2010-11-26 18:24:59 | 显示全部楼层

回复:大家帮忙看一下,我的板子是STM8的,为什么我的UART接收中断进不了。急。。

回复第 5 楼 安 于2010-11-26 09:22:46发表:
1、你没有开启环形中断
2、你没有配置中断优先级
3、你没有配置中断向量 

中断优先级和中断向量我都有加的。但是环形中断是什么,是中断的总开关吗
配置中断向量优先级:
IRQ_SetSoftPriority(ITC_IRQ_UART1_RX, ITC_IRQ_SOFT_PRIORITY_1);//配置软件优先级为1级
配置中断向量:
{0x82, (interrupt_handler_t)UART1_Rev_IRQHandler}, /* irq18 */
开启环形中断:
enable_IRQ();//打开中断总开关
那位朋友,是这样吗?我之前也是这样做的,不行呀。。
回复 支持 反对

使用道具 举报

1

主题

10

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2010-11-26 18:48:03 | 显示全部楼层

RE:大家帮忙看一下,我的板子是STM8的,为什么我的UART接收中断进不了。急。。

大家帮忙看看好吗,我弄了块一天了。。呜呜
回复 支持 反对

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2010-11-27 09:08:27 | 显示全部楼层

回复:大家帮忙看一下,我的板子是STM8的,为什么我的UART接收中断进不了。急。。

enableInterrupts(); // all interrupts enable
这个。
你可以参考一下附件中的例程。

UART3_example2.rar

下载

4.05 KB, 下载次数: 311

回复 支持 反对

使用道具 举报

24

主题

591

回帖

0

蝴蝶豆

中级会员

最后登录
2020-12-2
发表于 2011-4-29 11:26:57 | 显示全部楼层

RE:大家帮忙看一下,我的板子是STM8的,为什么我的UART接收中断进不了。急。。

你好像没有在中断中清中断标志。
回复 支持 反对

使用道具 举报

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版