求助,HAL库函数 串口中断接收,急急急,加入悬赏 _ 鞍山生活问答网
求助,HAL库函数 串口中断接收,急急急,加入悬赏
开发者只需要在回调函数中实现特定的功能即可,回掉函数是暴露给开发者的接口函数其实ST是把中断处理的细节给封装了起来,但是对于用惯了标准库的我来说。这样的好处是简化了开发过程(理论上是这样的,还是有些不适应
方法1 如何在64位操作系统上安装sql2000 要在 64 位操作系统上安装此应用程序,请使用以下步骤: 在sql2000安装盘CD1中打开STANDARD文件夹,按照以下步骤 安装 SQL Server 2000: 双击“x86\setup”子文件夹中的 setupsql.exe。 安装 SQL Server
方法1 如何在64位操作系统上安装sql2000 要在 64 位操作系统上安装此应用程序,请使用以下步骤: 在sql2000安装盘CD1中打开STANDARD文件夹,按照以下步骤 安装 SQL Server 2000: 双击“x86\setup”子文件夹中的 setupsql.exe。 安装 SQL Server 2...
1、学习开发环境使用 2、深入系统的学习编程 3、学习硬件设计过程 实践是第一位的!买一个开发板有利于快速入手,而优秀的开发板的设计对你的提高具有重要的意义。
HAL_UART_Receive_IT 不要放在HAL_UART_TxCpltCallback 里, 放在主函数里,在初始化的时候调用, 总之要在HAL_UART_Transmit_IT之前。
并不是上位机太快,而是你把程序写慢了。 两个问题: 1)接收中断函数里怎么能有发送标志位的判断? 这句去掉:while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) 2)你这个串口用的方式不对,你每接收一个数据需要进一次中断,实际...
1、学习开发环境使用 2、深入系统的学习编程 3、学习硬件设计过程 实践是第一位的!买一个开发板有利于快速入手,而优秀的开发板的设计对你的提高具有重要的意义。
其实ST是把中断处理的细节给封装了起来,回掉函数是暴露给开发者的接口函数,开发者只需要在回调函数中实现特定的功能即可。这样的好处是简化了开发过程(理论上是这样的,但是对于用惯了标准库的我来说,还是有些不适应,感觉都被束缚了
typedefstructlista{structlista*}voidinsert(list*h);voiddel(list*h);intmain(){list*head=(list*)malloc(sizeof(list));head-&next=NULL;while(1){
UART1_Init((u32)19200, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);//19200,8位,无校验 UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);//开启接收中断 UART1_ITConfig(UART...
返回主页:
本文网址:http://www.nvcike.cn/view-.html求助!HAL库函数 串口中断接收!急急急!加入悬赏 - STM32 - 意法半导体STM32/STM8技术社区
后使用快捷导航没有帐号?
查看: 16584|回复: 40
求助!HAL库函数 串口中断接收!急急急!加入悬赏
在线时间19 小时
该用户从未签到主题帖子精华
初级会员, 积分 175, 距离下一级还需 25 积分
首先介绍一下实验环境:单片机为stm32f415
调试器:st-link
硬件初始化:
*串口波特率为614400
*采用定时器每隔500us触发一次串口中断发送
*发送完成后进入中断接收模式
定时器中断回调函数如下:
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
& && &&&if(htim==&htim14)
& && && && && & GYRO_Handle.cmd_GYRO=GYRO_CMD;& && && && && &
& && && && && & HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);& && && && && && && && && && && & 使能发送
& && && && && & HAL_UART_Transmit_IT(&huart3, &GYRO_Handle.cmd_GYRO, 1);& && && && && && && && & 开启中断发送,然后进入发送模式
发送完成后进入发送中断完成回调函数:
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
& && &&&if(huart==&huart3)
& && && && && & HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);& && && && && && && && && && &&&使能接收
& && && && && & HAL_UART_Receive_IT(&huart3, GYRO_Handle.frame_GYRO, 7);& && && && && && && && &开启中断接收,然后进入接收模式
接收中断完成回调函数:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
& && &&&if(huart==&huart3)
& && && && && &&&用户函数区域
实验结果:
发送没有问题,可成功发送。
接收只能收到第一个字节。
接收服务函数老是进入错误服务函数,错误号为数据溢出
已经分析两天了,还是没有找到问题,求大师分析。
根据现像,乱码一般是时钟配置问题。楼主检查下时钟配置。
            
      
在线时间376 小时
ST金币6460
该用户从未签到主题帖子精华
我把原有中断服务函数的标志位处理函数的顺序改了一下。
现在可以收到数据了,但是第一个数据经常出现跟帧 ...
根据现像,乱码一般是时钟配置问题。楼主检查下时钟配置。
在线时间376 小时
ST金币6460
该用户从未签到主题帖子精华
HAL_UART_Receive_IT 不要放在HAL_UART_TxCpltCallback 里,放在主函数里,在初始化的时候调用,总之要在HAL_UART_Transmit_IT之前。
            
      
在线时间19 小时
该用户从未签到主题帖子精华
初级会员, 积分 175, 距离下一级还需 25 积分
HAL_UART_Receive_IT 不要放在HAL_UART_TxCpltCallback 里,放在主函数里,在初始化的时候调用,总之要在HA ...
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
& & & & if(htim==&htim14)
& & & & & & & & GYRO_Handle.cmd_GYRO=GYRO_CMD;& & & & & & & &
& & & & & & & & HAL_UART_Receive_IT(&huart3, GYRO_Handle.frame_GYRO, 7);& & & &
& & & & & & & & HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);& & & &
& & & & & & & & HAL_UART_Transmit_IT(&huart3, &GYRO_Handle.cmd_GYRO, 1);& & & &
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
& & & & if(huart==&huart3)
& & & & & & & & HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);& & & & & & & & & & & &
还是进入错误中断,无法进入接收完成中断
在线时间52 小时
该用户从未签到主题帖子精华
高级会员, 积分 571, 距离下一级还需 429 积分
波特率降低测试
            
      
在线时间19 小时
该用户从未签到主题帖子精华
初级会员, 积分 175, 距离下一级还需 25 积分
波特率降低测试
9600木有问题!
在线时间52 小时
该用户从未签到主题帖子精华
高级会员, 积分 571, 距离下一级还需 429 积分
通信距离有多远?用max3232?
            
      
在线时间376 小时
ST金币6460
该用户从未签到主题帖子精华
本帖最后由 党国特派员 于
11:40 编辑
HAL_UART_Receive_IT 只需要调用一次。
还有就是你的接收函数里都干了些什么,会不会时间超长了。
在线时间376 小时
ST金币6460
该用户从未签到主题帖子精华
如果 是还出现数据溢出的话,那你就用HAL_UART_Receive_DMA吧,最好是双缓冲的。
            
      
在线时间254 小时
ST金币2028
该用户从未签到主题帖子精华
金牌会员, 积分 4211, 距离下一级还需 789 积分
用户函数区处理时间太长
STM32粉丝勋章Ⅳ
狂欢节专属(智多星)
STM32粉丝勋章Ⅲ
狂欢节专属(分享宝宝)
STM32粉丝勋章Ⅰ
狂欢节专属(微信上墙)
STM32粉丝勋章Ⅱ
狂欢节专属(研讨会问答)
站长推荐 /1
Tel: 3-8064
备案号: 苏ICP备号-2
|||意法半导体STM32/STM8技术社区
Powered by求助!HAL库函数 串口中断接收!急急急!加入悬赏 - STM32 - 意法半导体STM32/STM8技术社区
后使用快捷导航没有帐号?
查看: 16586|回复: 40
求助!HAL库函数 串口中断接收!急急急!加入悬赏
在线时间19 小时
该用户从未签到主题帖子精华
初级会员, 积分 175, 距离下一级还需 25 积分
首先介绍一下实验环境:单片机为stm32f415
调试器:st-link
硬件初始化:
*串口波特率为614400
*采用定时器每隔500us触发一次串口中断发送
*发送完成后进入中断接收模式
定时器中断回调函数如下:
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
& && &&&if(htim==&htim14)
& && && && && & GYRO_Handle.cmd_GYRO=GYRO_CMD;& && && && && &
& && && && && & HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);& && && && && && && && && && && & 使能发送
& && && && && & HAL_UART_Transmit_IT(&huart3, &GYRO_Handle.cmd_GYRO, 1);& && && && && && && && & 开启中断发送,然后进入发送模式
发送完成后进入发送中断完成回调函数:
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
& && &&&if(huart==&huart3)
& && && && && & HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);& && && && && && && && && && &&&使能接收
& && && && && & HAL_UART_Receive_IT(&huart3, GYRO_Handle.frame_GYRO, 7);& && && && && && && && &开启中断接收,然后进入接收模式
接收中断完成回调函数:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
& && &&&if(huart==&huart3)
& && && && && &&&用户函数区域
实验结果:
发送没有问题,可成功发送。
接收只能收到第一个字节。
接收服务函数老是进入错误服务函数,错误号为数据溢出
已经分析两天了,还是没有找到问题,求大师分析。
根据现像,乱码一般是时钟配置问题。楼主检查下时钟配置。
            
      
在线时间376 小时
ST金币6460
该用户从未签到主题帖子精华
我把原有中断服务函数的标志位处理函数的顺序改了一下。
现在可以收到数据了,但是第一个数据经常出现跟帧 ...
根据现像,乱码一般是时钟配置问题。楼主检查下时钟配置。
在线时间376 小时
ST金币6460
该用户从未签到主题帖子精华
HAL_UART_Receive_IT 不要放在HAL_UART_TxCpltCallback 里,放在主函数里,在初始化的时候调用,总之要在HAL_UART_Transmit_IT之前。
            
      
在线时间19 小时
该用户从未签到主题帖子精华
初级会员, 积分 175, 距离下一级还需 25 积分
HAL_UART_Receive_IT 不要放在HAL_UART_TxCpltCallback 里,放在主函数里,在初始化的时候调用,总之要在HA ...
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
& & & & if(htim==&htim14)
& & & & & & & & GYRO_Handle.cmd_GYRO=GYRO_CMD;& & & & & & & &
& & & & & & & & HAL_UART_Receive_IT(&huart3, GYRO_Handle.frame_GYRO, 7);& & & &
& & & & & & & & HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);& & & &
& & & & & & & & HAL_UART_Transmit_IT(&huart3, &GYRO_Handle.cmd_GYRO, 1);& & & &
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
& & & & if(huart==&huart3)
& & & & & & & & HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);& & & & & & & & & & & &
还是进入错误中断,无法进入接收完成中断
在线时间52 小时
该用户从未签到主题帖子精华
高级会员, 积分 571, 距离下一级还需 429 积分
波特率降低测试
            
      
在线时间19 小时
该用户从未签到主题帖子精华
初级会员, 积分 175, 距离下一级还需 25 积分
波特率降低测试
9600木有问题!
在线时间52 小时
该用户从未签到主题帖子精华
高级会员, 积分 571, 距离下一级还需 429 积分
通信距离有多远?用max3232?
            
      
在线时间376 小时
ST金币6460
该用户从未签到主题帖子精华
本帖最后由 党国特派员 于
11:40 编辑
HAL_UART_Receive_IT 只需要调用一次。
还有就是你的接收函数里都干了些什么,会不会时间超长了。
在线时间376 小时
ST金币6460
该用户从未签到主题帖子精华
如果 是还出现数据溢出的话,那你就用HAL_UART_Receive_DMA吧,最好是双缓冲的。
            
      
在线时间254 小时
ST金币2028
该用户从未签到主题帖子精华
金牌会员, 积分 4211, 距离下一级还需 789 积分
用户函数区处理时间太长
STM32粉丝勋章Ⅳ
狂欢节专属(智多星)
STM32粉丝勋章Ⅲ
狂欢节专属(分享宝宝)
STM32粉丝勋章Ⅰ
狂欢节专属(微信上墙)
STM32粉丝勋章Ⅱ
狂欢节专属(研讨会问答)
站长推荐 /1
Tel: 3-8064
备案号: 苏ICP备号-2
|||意法半导体STM32/STM8技术社区
Powered by求助!HAL库函数 串口中断接收!急急急!加入悬赏 - STM32 - 意法半导体STM32/STM8技术社区
后使用快捷导航没有帐号?
查看: 16588|回复: 40
求助!HAL库函数 串口中断接收!急急急!加入悬赏
在线时间19 小时
该用户从未签到主题帖子精华
初级会员, 积分 175, 距离下一级还需 25 积分
首先介绍一下实验环境:单片机为stm32f415
调试器:st-link
硬件初始化:
*串口波特率为614400
*采用定时器每隔500us触发一次串口中断发送
*发送完成后进入中断接收模式
定时器中断回调函数如下:
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
& && &&&if(htim==&htim14)
& && && && && & GYRO_Handle.cmd_GYRO=GYRO_CMD;& && && && && &
& && && && && & HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);& && && && && && && && && && && & 使能发送
& && && && && & HAL_UART_Transmit_IT(&huart3, &GYRO_Handle.cmd_GYRO, 1);& && && && && && && && & 开启中断发送,然后进入发送模式
发送完成后进入发送中断完成回调函数:
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
& && &&&if(huart==&huart3)
& && && && && & HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);& && && && && && && && && && &&&使能接收
& && && && && & HAL_UART_Receive_IT(&huart3, GYRO_Handle.frame_GYRO, 7);& && && && && && && && &开启中断接收,然后进入接收模式
接收中断完成回调函数:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
& && &&&if(huart==&huart3)
& && && && && &&&用户函数区域
实验结果:
发送没有问题,可成功发送。
接收只能收到第一个字节。
接收服务函数老是进入错误服务函数,错误号为数据溢出
已经分析两天了,还是没有找到问题,求大师分析。
根据现像,乱码一般是时钟配置问题。楼主检查下时钟配置。
            
      
在线时间376 小时
ST金币6460
该用户从未签到主题帖子精华
我把原有中断服务函数的标志位处理函数的顺序改了一下。
现在可以收到数据了,但是第一个数据经常出现跟帧 ...
根据现像,乱码一般是时钟配置问题。楼主检查下时钟配置。
在线时间376 小时
ST金币6460
该用户从未签到主题帖子精华
HAL_UART_Receive_IT 不要放在HAL_UART_TxCpltCallback 里,放在主函数里,在初始化的时候调用,总之要在HAL_UART_Transmit_IT之前。
            
      
在线时间19 小时
该用户从未签到主题帖子精华
初级会员, 积分 175, 距离下一级还需 25 积分
HAL_UART_Receive_IT 不要放在HAL_UART_TxCpltCallback 里,放在主函数里,在初始化的时候调用,总之要在HA ...
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
& & & & if(htim==&htim14)
& & & & & & & & GYRO_Handle.cmd_GYRO=GYRO_CMD;& & & & & & & &
& & & & & & & & HAL_UART_Receive_IT(&huart3, GYRO_Handle.frame_GYRO, 7);& & & &
& & & & & & & & HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);& & & &
& & & & & & & & HAL_UART_Transmit_IT(&huart3, &GYRO_Handle.cmd_GYRO, 1);& & & &
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
& & & & if(huart==&huart3)
& & & & & & & & HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);& & & & & & & & & & & &
还是进入错误中断,无法进入接收完成中断
在线时间52 小时
该用户从未签到主题帖子精华
高级会员, 积分 571, 距离下一级还需 429 积分
波特率降低测试
            
      
在线时间19 小时
该用户从未签到主题帖子精华
初级会员, 积分 175, 距离下一级还需 25 积分
波特率降低测试
9600木有问题!
在线时间52 小时
该用户从未签到主题帖子精华
高级会员, 积分 571, 距离下一级还需 429 积分
通信距离有多远?用max3232?
            
      
在线时间376 小时
ST金币6460
该用户从未签到主题帖子精华
本帖最后由 党国特派员 于
11:40 编辑
HAL_UART_Receive_IT 只需要调用一次。
还有就是你的接收函数里都干了些什么,会不会时间超长了。
在线时间376 小时
ST金币6460
该用户从未签到主题帖子精华
如果 是还出现数据溢出的话,那你就用HAL_UART_Receive_DMA吧,最好是双缓冲的。
            
      
在线时间254 小时
ST金币2028
该用户从未签到主题帖子精华
金牌会员, 积分 4211, 距离下一级还需 789 积分
用户函数区处理时间太长
STM32粉丝勋章Ⅳ
狂欢节专属(智多星)
STM32粉丝勋章Ⅲ
狂欢节专属(分享宝宝)
STM32粉丝勋章Ⅰ
狂欢节专属(微信上墙)
STM32粉丝勋章Ⅱ
狂欢节专属(研讨会问答)
站长推荐 /1
Tel: 3-8064
备案号: 苏ICP备号-2
|||意法半导体STM32/STM8技术社区
Powered by求助,HAL库函数 串口中断接收,急急急,加入悬赏_百度知道
求助,HAL库函数 串口中断接收,急急急,加入悬赏
我有更好的答案
1、学习开发环境使用2、深入系统的学习编程3、学习硬件设计过程实践是第一位的!买一个开发板有利于快速入手,而优秀的开发板的设计对你的提高具有重要的意义。
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。