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

查看: 11314|回复: 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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版