做了一个 STM32的串口模块, 开启了接收中断, 在中断中做了以下操作, 想实现: 将串口接收的内容 通过串口再发出去
测试了 普通英文字符 ,都是正常的。 但是小括号符 就不行,程序就死掉了 ,例如 aaa(2,2“”) 串口输出 aaa( 然后就死了~~~~ 请问 小括号符 不能接收吗?? |
【STM32F0开发日志/评测/笔记】+互补PWM波的产生
STM32F030 PB14和PB15无法输出PWM求助
【STM32F030探索套件】序列之五 外部中断
【STM32F0开发日志---二】+ucosii.2.92移植在STM32F030
上传个STM32F0+5110+内部温度传感器的菜鸟实例
【STM32F030探索套件使用问题】STM32F030 SPI方式驱动ST7565LCD失败
求一份STM32F051 I2C驱动LCD 12864的例程
STM32F0 M0 向结构体赋值进入HardFault异常
STM32F0 ADC-DMA方式采集2路数据时出现问题
STM32F030C8T6,TIM16定时慢很多问题?
评分
查看全部评分
可能是溢出了!!!
初次配置, 不知道 串口的接收区如何设置, 没有配置到,
评分
查看全部评分
评分
查看全部评分
不能够。都能发。
不过,如果像你主楼帖子发的小括号的话,那是全角符号,占两个字节。
请区分"("和"(",这两个是不一样的。
你的程序只适合一个字节一个字节的发,不能两个字节一起发。就是说两个字节发送之间,得有一定的延时。
或者写成,中断中接收字符到数组,主程序中发送。发送不能影响接收中断。
评分
查看全部评分
好像真的是 溢出了~~~
几个字符可以,但是一长串 字符就 挂了!!!!
请问 默认 串口的接收区 是多大?
void USART_Configuration(void)
{
USART_InitTypeDef USART_InitStructure;
/******************************************************************
USART²ÎÊý³õʼ»¯: ²¨ÌØÂÊ ´«ÊäλÊý ֹͣλÊý УÑéλÊý
115200 8 1 0(NO)
*******************************************************************/
USART_InitStructure.USART_BaudRate = 115200; //É趨´«ÊäËÙÂÊ
USART_InitStructure.USART_WordLength = USART_WordLength_8b; //É趨´«ÊäÊý¾ÝλÊý
USART_InitStructure.USART_StopBits = USART_StopBits_1; //É趨ֹͣλ¸öÊý
USART_InitStructure.USART_Parity = USART_Parity_No ; //²»ÓÃУÑéλ
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//²»ÓÃÁ÷Á¿¿ØÖÆ
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //ʹÓýÓÊպͷ¢Ë͹¦ÄÜ
USART_Init(USART1, &USART_InitStructure); //³õʼ»¯USART1
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); //ʹÄÜUSART1½ÓÊÕÖжÏ
USART_Cmd(USART1, ENABLE); //ʹÄÜUSART1
}
是的,可能是溢出了, 我配置串口的时候 只设置了一些普通的常数, 不知道默认的串口接收区是多大?
谢谢你, 可能是溢出了!正在查看默认串口接收区是多大
发字符是没问题的,在英文输入状态下。
评分
查看全部评分
ST的串口没有硬件缓存区,你得用软件实现,譬如申请一个100字节的缓存区,在中断中把收到的数据放到缓存中,在主函数中进行回显操作,论坛里有很多这样的例程的
好的谢谢!
好的明白!
这样的话 关于软件缓存的动作我就有一个 疑问;
首选由于 ST 没有硬件缓存区,那么意味着 接收到一个完整的字节 后 中断触发。
中断触发后,串口是否还在工作呢?
比如发送端发过来 一个20字节的字符, 收到第一个字符之后 开始进入中断,
后面19个字符 是等中断出来, 然后下一个字节接收 触发中断 ,再进入中断接收?
还是, 在第一个字节进入中断后, 串口继续工作,后面的字符继续 “收” 进来?
如果是第二种情况 那么, 如果 发送端是不定时的话, 那软件上做缓存 会不会 出现 “断节” 的现象
比如 缓存区15个字节, 第一次 来了10个字符, 接收过程中又来了10个~~~ 只收后一个包的5个字符
评分
查看全部评分