求助,stm8s103stm8串口接收中断程序进不了

21ic官方微信-->
后使用快捷导航没有帐号?
ST MCU Finder
安装免费手机应用,
寻找理想的ST MCU
请完成以下验证码
查看: 5201|回复: 19
STM8写EEPROM时UART接收中断为什么发生过载错误?
&&已结帖(20)
主题帖子积分
技术总监, 积分 22322, 距离下一级还需 27678 积分
技术总监, 积分 22322, 距离下一级还需 27678 积分
主题帖子积分
专家等级:结帖率:85%
主题帖子积分
技术总监, 积分 22322, 距离下一级还需 27678 积分
技术总监, 积分 22322, 距离下一级还需 27678 积分
STM8写EEPROM时UART接收中断为什么发生过载错误?UART_SR的OR置位。
不写EEPROM时串口中断接收数据正常。
主题帖子积分
主题帖子积分
专家等级:结帖率:27%打赏:0.00受赏:12.00
主题帖子积分
因为写EEPROM时CPU暂停运行。
I do not teach, but I coach. I do not feed, but I seed.
欢迎访问我的博客:/BLOG_OWNER_199055.HTM
主题帖子积分
技术总监, 积分 22322, 距离下一级还需 27678 积分
技术总监, 积分 22322, 距离下一级还需 27678 积分
主题帖子积分
专家等级:结帖率:85%
主题帖子积分
技术总监, 积分 22322, 距离下一级还需 27678 积分
技术总监, 积分 22322, 距离下一级还需 27678 积分
如何解决这个问题?
主题帖子积分
主题帖子积分
专家等级:结帖率:27%打赏:0.00受赏:12.00
主题帖子积分
I do not teach, but I coach. I do not feed, but I seed.
欢迎访问我的博客:/BLOG_OWNER_199055.HTM
主题帖子积分
主题帖子积分
专家等级:结帖率:47%
主题帖子积分
提示: 作者被禁止或删除 内容自动屏蔽
USB-TTL-232-485-422转换模块、485中继/4~20mA采集变送/温湿度/IO模块/工业仪器仪表
主题帖子积分
技术总监, 积分 22322, 距离下一级还需 27678 积分
技术总监, 积分 22322, 距离下一级还需 27678 积分
主题帖子积分
专家等级:结帖率:85%
主题帖子积分
技术总监, 积分 22322, 距离下一级还需 27678 积分
技术总监, 积分 22322, 距离下一级还需 27678 积分
串口接收有时候是无法预知的,只能找时机写EEPROM了。首次对STM8表示遗憾,呵呵
主题帖子积分
主题帖子积分
专家等级:结帖率:27%打赏:0.00受赏:12.00
主题帖子积分
难道你的程序中没有出错处理?没有串口接收出错的重传机制? 如果真的没有出错处理,才是真的遗憾,:lol
I do not teach, but I coach. I do not feed, but I seed.
欢迎访问我的博客:/BLOG_OWNER_199055.HTM
主题帖子积分
技术总监, 积分 22322, 距离下一级还需 27678 积分
技术总监, 积分 22322, 距离下一级还需 27678 积分
主题帖子积分
专家等级:结帖率:85%
主题帖子积分
技术总监, 积分 22322, 距离下一级还需 27678 积分
技术总监, 积分 22322, 距离下一级还需 27678 积分
有出错处理,但这不是理由。以前用AVR从来没考虑过这个问题。
主题帖子积分
主题帖子积分
专家等级:结帖率:27%打赏:0.00受赏:12.00
主题帖子积分
有出错处理,但这不是理由。以前用AVR从来没考虑过这个问题。
dadodo 发表于
写EEPROM肯定不是随时都要写的,肯定是偶尔写一次,如果因为偶尔写一次而造成串口接收出错,则可以使用出错处理机制来处理。
因为偶尔一次,所以可以是出错处理的理由。
I do not teach, but I coach. I do not feed, but I seed.
欢迎访问我的博客:/BLOG_OWNER_199055.HTM
主题帖子积分
中级技术员, 积分 270, 距离下一级还需 30 积分
中级技术员, 积分 270, 距离下一级还需 30 积分
主题帖子积分
专家等级:结帖率:7%
主题帖子积分
中级技术员, 积分 270, 距离下一级还需 30 积分
中级技术员, 积分 270, 距离下一级还需 30 积分
这种设计比较怪。写个EEPROM还要停下来
主题帖子积分
初级工程师, 积分 2492, 距离下一级还需 508 积分
初级工程师, 积分 2492, 距离下一级还需 508 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
初级工程师, 积分 2492, 距离下一级还需 508 积分
初级工程师, 积分 2492, 距离下一级还需 508 积分
因为它的EEPROM和Flash是共用读写电路的吧,STM32也这样啊。这确实是个问题,可以外扩个IIC。
主题帖子积分
资深技术员, 积分 400, 距离下一级还需 100 积分
资深技术员, 积分 400, 距离下一级还需 100 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
资深技术员, 积分 400, 距离下一级还需 100 积分
资深技术员, 积分 400, 距离下一级还需 100 积分
你用的哪个型号的芯片?
带RWW功能的芯片不会有这类问题,除非是使用不正常。
主题帖子积分
中级技术员, 积分 295, 距离下一级还需 5 积分
中级技术员, 积分 295, 距离下一级还需 5 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
中级技术员, 积分 295, 距离下一级还需 5 积分
中级技术员, 积分 295, 距离下一级还需 5 积分
我也觉得很奇怪,仿真时一写EEPROM就出现问题
而且EEPROM有时能写进去有时写不进去
本帖子中包含更多资源
才可以下载或查看,没有帐号?
主题帖子积分
资深技术员, 积分 400, 距离下一级还需 100 积分
资深技术员, 积分 400, 距离下一级还需 100 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
资深技术员, 积分 400, 距离下一级还需 100 积分
资深技术员, 积分 400, 距离下一级还需 100 积分
你写EEPROM的程序贴出来看看
对于带RWW功能的芯片
第一次写EEPROM可以直接写入,然后可以继续去干别的事情。不会影响中断响应。
接下来在写EEPROM前必须判断(是必须。。。)前一次写入是否完成,如果没有完成继续去干别的事情。等下次回来再判断一下前一次写入是否完成,只有在前一次写入已经完成的情况下,才能继续写下一次。否则,MCU一定会被HOLD住,无法响应任何中断,切记,切记。
对于不带RWW功能的芯片必须等一次写完再去干别的事情。
主题帖子积分
资深技术员, 积分 400, 距离下一级还需 100 积分
资深技术员, 积分 400, 距离下一级还需 100 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
资深技术员, 积分 400, 距离下一级还需 100 积分
资深技术员, 积分 400, 距离下一级还需 100 积分
因为它的EEPROM和Flash是共用读写电路的吧,STM32也这样啊。这确实是个问题,可以外扩个IIC。
zhiwei 发表于
STM8的FLASH和STM32是完全不同的。
跟什么共用读写电路完全没有关系。
对于EEPROM来说,虽然是可以单字节写入和擦除,但是EEPROM本省上电是按区块来上电的。在你写某一个字节的数据时,其实整个这个区块都是上电状态。试想,在这种情况下,是没有办法在前一次操作还没有完成的情况下去进行下一次EEPROM操作的。一次EEPROM的写入时间是6MS(或者快速模式3ms)..如果在前一次写入还没有完成的情况下,又写入了新的数据,那么MCU只能将所有操作停掉,等数据都被写入了再继续工作了。
主题帖子积分
资深技术员, 积分 400, 距离下一级还需 100 积分
资深技术员, 积分 400, 距离下一级还需 100 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
资深技术员, 积分 400, 距离下一级还需 100 积分
资深技术员, 积分 400, 距离下一级还需 100 积分
所以,对于带RWW功能的芯片来说,在写入新数据前判断前一次操作是否已经完成是最方便有效的方法。不会影响EEPROM的写入,也不会影响任何中断的响应和程序的执行。
主题帖子积分
技术总监, 积分 22322, 距离下一级还需 27678 积分
技术总监, 积分 22322, 距离下一级还需 27678 积分
主题帖子积分
专家等级:结帖率:85%
主题帖子积分
技术总监, 积分 22322, 距离下一级还需 27678 积分
技术总监, 积分 22322, 距离下一级还需 27678 积分
可惜不带RWW的芯片有不少啊
主题帖子积分
高级工程师, 积分 5024, 距离下一级还需 2976 积分
高级工程师, 积分 5024, 距离下一级还需 2976 积分
主题帖子积分
专家等级:结帖率:94%
主题帖子积分
高级工程师, 积分 5024, 距离下一级还需 2976 积分
高级工程师, 积分 5024, 距离下一级还需 2976 积分
还真是个问题,用avr从来没有考虑过这个.真是一个败笔啊
好在现在项目暂时两个不用同时操作
数显ESR电容等效内阻测量仪
主题帖子积分
高级技术员, 积分 700, 距离下一级还需 300 积分
高级技术员, 积分 700, 距离下一级还需 300 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
高级技术员, 积分 700, 距离下一级还需 300 积分
高级技术员, 积分 700, 距离下一级还需 300 积分
菜鸟蛰伏ing
主题帖子积分
初级技术员, 积分 58, 距离下一级还需 42 积分
初级技术员, 积分 58, 距离下一级还需 42 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
初级技术员, 积分 58, 距离下一级还需 42 积分
初级技术员, 积分 58, 距离下一级还需 42 积分
这个bug要了亲命了
核心会员奖章
等级类勋章
时间类勋章
技术导师奖章
人才类勋章
沉静之湖泊
发帖类勋章
荣誉元老奖章
等级类勋章
坚毅之洋流
发帖类勋章
时间类勋章
技术领袖奖章
人才类勋章
晶莹之水滴
发帖类勋章
时间类勋章
技术新星奖章
人才类勋章
无冕之王奖章
等级类勋章
时间类勋章
甘甜之泉水
发帖类勋章
时间类勋章
技术奇才奖章
人才类勋章2011年3月 硬件/嵌入开发大版内专家分月排行榜第二2011年2月 硬件/嵌入开发大版内专家分月排行榜第二2010年10月 硬件/嵌入开发大版内专家分月排行榜第二
2011年3月 硬件/嵌入开发大版内专家分月排行榜第二2011年2月 硬件/嵌入开发大版内专家分月排行榜第二2010年10月 硬件/嵌入开发大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。21ic官方微信-->
后使用快捷导航没有帐号?
ST MCU Finder
安装免费手机应用,
寻找理想的ST MCU
请完成以下验证码
查看: 1962|回复: 6
我的STM8串口接收中断为啥总是溢出错误啊?
&&已结帖(20)
主题帖子积分
高级技术员, 积分 805, 距离下一级还需 195 积分
高级技术员, 积分 805, 距离下一级还需 195 积分
主题帖子积分
专家等级:结帖率:96%打赏:0.00受赏:1.00
主题帖子积分
高级技术员, 积分 805, 距离下一级还需 195 积分
高级技术员, 积分 805, 距离下一级还需 195 积分
我用STM8的串口中断接收GSM模块的数据,波特率是38400,串口接收到的字符串有时候是对的,有时候会少一个字符。我发现是串口溢出错误引起的,如果不清除溢出标志,就会在串口中断里跳不出来了。
问题是,为啥我的程序老是溢出错误呢? 有的人说是串口的FIFO不够,所以溢出,有的人说是中断优先级不够高,是这样么?我这里也就一个串口中断,一个定时器中断。希望高手指教,非常感谢!!
int main( void )
& & u8 *pr,i;
& & u8 loc_temp[20];
& & GPIO_Init(GPIOC, GPIO_Pin_3, GPIO_Mode_Out_PP_High_Fast);&&//TXD& &//txd初始化为高电平互补推挽输出模式
& & GPIO_Init(GPIOC, GPIO_Pin_2, GPIO_Mode_In_PU_No_IT);& && &//RXD& & //rxd初始化为不带中断上拉输入模式&&
& & CLK_PeripheralClockConfig (CLK_Peripheral_USART1,ENABLE);//开启USART时钟
& & USART_Init(USART1,38400,USART_WordLength_8b,USART_StopBits_1,USART_Parity_No,USART_Mode_Tx|USART_Mode_Rx);//设置USART参数,接收/发送
& & USART_ITConfig (USART1,USART_IT_RXNE,ENABLE);//使能接收中断
& & USART_Cmd (USART1,ENABLE);//使能USART
& & CLK_PeripheralClockConfig (CLK_Peripheral_TIM4,ENABLE); //使能外设时钟
& & TIM4_TimeBaseInit(TIM4_Prescaler_128, 0xff);
& & TIM4_ClearFlag(TIM4_FLAG_Update);
& & TIM4_ITConfig(TIM4_IT_Update, ENABLE);
& & TIM4_Cmd(ENABLE);& &
& & enableInterrupts();
& & Delay(60000);&&
& & GSM_Start_Config();
& & while(1)
//===============================================================
INTERRUPT_HANDLER(USART1_RX_TIM5_CC_IRQHandler,28) //串口中断处理程序
& & /* In order to detect unexpected events during development,
& && & it is recommended to set a breakpoint on the following instruction.
& &&&if( USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)//接收中断处理
& && && &USART_ClearITPendingBit (USART1,USART_IT_RXNE);//清中断标志& && &
& && && &cc=USART_ReceiveData8 (USART1);
& && && &if(USART_RX_STA&200)
& && && &{
& && && && &receive_count=0;
& && && && &if(USART_RX_STA==0)
& && && && &{
& && && && && & count_start_flag =1;//计数器开始计数
& && && && &}
& && && && &USART_RX_BUF[USART_RX_STA++]=& && && &
& && && &}
& && && &else
& && && &{
& && && && &USART_RX_STA|=1&&14;
& && && && &count_start_flag =0;
& && && &}
& &&&if(USART_GetFlagStatus(USART1,USART_FLAG_OR)==SET)//溢出中断处理
& && & USART_ClearFlag(USART1,USART_FLAG_OR);
& && & USART_ReceiveData8 (USART1);
& &&&}& &&&
满意回复+20
你这个代码看着就头大
会不会是初始化问题呢
主题帖子积分
高级技术员, 积分 805, 距离下一级还需 195 积分
高级技术员, 积分 805, 距离下一级还需 195 积分
主题帖子积分
专家等级:结帖率:96%打赏:0.00受赏:1.00
主题帖子积分
高级技术员, 积分 805, 距离下一级还需 195 积分
高级技术员, 积分 805, 距离下一级还需 195 积分
有知道的朋友么&&帮忙下哦
主题帖子积分
高级技术员, 积分 805, 距离下一级还需 195 积分
高级技术员, 积分 805, 距离下一级还需 195 积分
主题帖子积分
专家等级:结帖率:96%打赏:0.00受赏:1.00
主题帖子积分
高级技术员, 积分 805, 距离下一级还需 195 积分
高级技术员, 积分 805, 距离下一级还需 195 积分
主题帖子积分
资深工程师, 积分 10438, 距离下一级还需 9562 积分
资深工程师, 积分 10438, 距离下一级还需 9562 积分
主题帖子积分
专家等级:结帖率:91%
主题帖子积分
资深工程师, 积分 10438, 距离下一级还需 9562 积分
资深工程师, 积分 10438, 距离下一级还需 9562 积分
你这个代码看着就头大& &会不会是初始化问题呢
主题帖子积分
中级技术员, 积分 132, 距离下一级还需 168 积分
中级技术员, 积分 132, 距离下一级还需 168 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
中级技术员, 积分 132, 距离下一级还需 168 积分
中级技术员, 积分 132, 距离下一级还需 168 积分
波特率太高了&&中断中处理数据时间太长& &猜测的
主题帖子积分
中级技术员, 积分 132, 距离下一级还需 168 积分
中级技术员, 积分 132, 距离下一级还需 168 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
中级技术员, 积分 132, 距离下一级还需 168 积分
中级技术员, 积分 132, 距离下一级还需 168 积分
ITC_SPR6 &= 0x3f;//tim1 软件优先级2级
要不加上这句& &就是你查下手册&&你的定时器中断号是多少 找到中断优先级控制r
主题帖子积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
找到问题了吗。我也遇到了
涓涓之细流
发帖类勋章
时间类勋章
技术新星奖章
人才类勋章
沉静之湖泊
发帖类勋章
精英会员奖章
等级类勋章
时间类勋章stm8s串口中断与adc采样问题 - STM8 - 意法半导体STM32/STM8技术社区
后使用快捷导航没有帐号?
查看: 1129|回复: 9
stm8s串口中断与adc采样问题
在线时间1479 小时
ST金币9939754
主题帖子好友
程序需实现3.5V以下关机功能,若每12秒未收到串口输入的数据(数据是5秒发一次字符a),否则闪断关机脚,现在的问题是串口没有输入时,可检测到3.5V并关机,若串口不断有数据输入时,则3.3V才关机,请问何原因?
在线时间158 小时
ST金币1082
主题帖子好友
金牌会员, 积分 2382, 距离下一级还需 2618 积分
金牌会员, 积分 2382, 距离下一级还需 2618 积分
一个是考虑到中断优先级,二是要考虑是否参考电压,参考电压不稳,怎么干都不是很准,最后就是程序风格,逻辑不对,也会出现这种情况
在线时间313 小时
ST金币2546
主题帖子好友
金牌会员, 积分 4680, 距离下一级还需 320 积分
金牌会员, 积分 4680, 距离下一级还需 320 积分
回帖奖励 +1
中断优先级?
在线时间136 小时
ST金币2811
主题帖子好友
金牌会员, 积分 2820, 距离下一级还需 2180 积分
金牌会员, 积分 2820, 距离下一级还需 2180 积分
基准电压是不是外部的?稳不稳定?
在线时间297 小时
主题帖子好友
程序阻塞!& &
在线时间5 小时
主题帖子好友
初级会员, 积分 170, 距离下一级还需 30 积分
初级会员, 积分 170, 距离下一级还需 30 积分
应该不是什么大问题吧
在线时间94 小时
主题帖子好友
金牌会员, 积分 1514, 距离下一级还需 3486 积分
金牌会员, 积分 1514, 距离下一级还需 3486 积分
在线时间190 小时
ST金币2117
主题帖子好友
金牌会员, 积分 3527, 距离下一级还需 1473 积分
金牌会员, 积分 3527, 距离下一级还需 1473 积分
重点看参考电压
在线时间32 小时
主题帖子好友
高级会员, 积分 578, 距离下一级还需 422 积分
高级会员, 积分 578, 距离下一级还需 422 积分
一直接收串口去了吧,考虑下状态机的问题
在线时间58 小时
主题帖子好友
高级会员, 积分 982, 距离下一级还需 18 积分
高级会员, 积分 982, 距离下一级还需 18 积分
学习了,谢谢!
站长推荐 /2
,同时大家也可以下载电子版学习
Tel: 3-8064
备案号: 苏ICP备号-2
|||意法半导体STM32/STM8技术社区
Powered by}

我要回帖

更多关于 stm8s串口接收程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信