大侠们看看我分的区我是不是心里有问题有问题!!!!

→ 大侠们帮我看看体检报告,看看我的问题严不
大侠们帮我看看体检报告,看看我的问题严不
健康咨询描述:
大侠们帮我看看体检报告,看看我的问题严不严重啊
其他类似问题
医生回复区
张掖市人民医院&& 主治医师
擅长: 十二指肠溃疡,消化不良,糖尿病,胃溃疡,胃炎
微信扫一扫,随时问医生
&&&&&&病情分析:&&&&&&您好,综合您的体检结果主要问题是尿酸高,这个有可能导致痛风。&&&&&&指导意见:&&&&&&我的意见平时不要吃高嘌呤的食物,具体的食物您的体检意见里面写的很详细。
您可能关注的问题
用药指导/吃什么药好
本品用于湿热瘀滞所致的带下病。...
参考价格:¥28
本品用于跌打损伤,跖骨、趾骨骨折,瘀血肿痛,吐血...
参考价格:¥17.5
您好,虽然我们的工作人员都在竭尽所能的改善网站,让大家能够非常方便的使用网站,但是其中难免有所疏漏,对您造成非常不必要的麻烦。在此,有问必答网向您表示深深的歉意,如果您遇到的麻烦还没有解决,您可以通过以下方式联系我们,我们会优先特殊解决您的问题。
请选择投诉理由
涉嫌广告宣传
无意义提问
非医学类咨询
违背伦理道德
其他投诉理由
涉嫌广告宣传
无意义回复
违背伦理道德
复制粘贴内容
常识性错误
其他投诉理由
如遇紧急情况,请致电400-关于STM32F030的串口发送不能中断,请大侠们帮忙看看 - STM32 - 意法半导体STM32/STM8技术社区
后使用快捷导航没有帐号?
查看: 5478|回复: 17
关于STM32F030的串口发送不能中断,请大侠们帮忙看看
在线时间6 小时
该用户从未签到主题帖子精华
初级会员, 积分 55, 距离下一级还需 145 积分
本帖最后由 yinlian 于
00:05 编辑
& & 最近在开发的一个案子,使用STM32F030C8T6 主芯片,需要用到STM32F030C8T6的串口与外设完成通讯和控制,现在遇到的问题是:接收没有问题,单独发送也没有问题,但是将接收到的信息转化为控制命令发送回去的时候,发现出程序不能产生中断,程序死在发送函数了:下面是源码,请大侠们帮忙看看问题出在哪里:
& & static& && && & void& && && & USART1_Init_config()
& && && && && && & GPIO_InitTypeDef& && &GPIO_Init_S
& && && && && && & NVIC_InitTypeDef& && &NVIC_Init_S
& && && && && && & USART_InitTypeDef& && &USART_Init_S
& && && && && && &&&//?¨??GPIO??USART ??? 1/4 >>? 1/2 á????
& && && && && && & RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
& && && && && && & RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
& && && && && && & //?ò??USART1??GPIOB(USART1 TX/RX ,????? 1/2 ?)?±??
& && && && && && & USART1_DMA_config();
& && && && && && & //????USART1 u?DMA?¨u??>>
& && && && && && & GPIO_PinAFConfig(GPIOB,GPIO_PinSource6,GPIO_AF_0);
& && && && && && & GPIO_PinAFConfig(GPIOB,GPIO_PinSource7,GPIO_AF_0);
& && && && && && & GPIO_Init_Struct.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
& && && && && && & GPIO_Init_Struct.GPIO_Mode = GPIO_Mode_AF;
& && && && && && & GPIO_Init_Struct.GPIO_Speed = GPIO_Speed_Level_3 ;
& && && && && && & GPIO_Init_Struct.GPIO_OType = GPIO_OType_PP;
& && && && && && & GPIO_Init_Struct.GPIO_PuPd = GPIO_PuPd_NOPULL;
& && && && && && & GPIO_Init(GPIOB,&GPIO_Init_Struct);
& && && && && && & //????PB6 ??PB7??USART1 TX ??RX?¨?AE????????? 1/2 ?(C)
& && && && && && & NVIC_Init_Struct.NVIC_IRQChannel = USART1_IRQn;
& && && && &NVIC_Init_Struct.NVIC_IRQChannelPriority = 0x01;
& && && && &NVIC_Init_Struct.NVIC_IRQChannelCmd = ENABLE;
& && && && &NVIC_Init(&NVIC_Init_Struct);
& && && &&&//????NVIC????USART1 ????
& && && && && && & USART_Init_Struct.USART_BaudRate = 57600;
& && && && && && & USART_Init_Struct.USART_WordLength = USART_WordLength_8b;
& && && && && && & USART_Init_Struct.USART_StopBits = USART_StopBits_1;
& && && && && && & USART_Init_Struct.USART_Parity = USART_Parity_No;
& && && & USART_Init_Struct.USART_Mode = USART_Mode_Rx|USART_Mode_Tx;
& && && & USART_Init_Struct.USART_HardwareFlowControl = USART_HardwareFlowControl_N
& && && & USART_Init(USART1, &USART_Init_Struct);
& && && & USART_ITConfig(USART1, USART_IT_RXNE,ENABLE);
& && && & USART_ITConfig(USART1, USART_IT_TXE,DISABLE);
& && && & USART_Cmd(USART1, ENABLE);
& && && & //????USART1 ??5???? ?<
& & 上面的代码是,打开串口1中断,配置串口1为全双工异步通讯模式,(配置:57600、8、无、无、1)
& && && & void& && &USART1_IRQHandler(void)
& && && & if&&(USART_GetITStatus(USART1,USART_IT_RXNE) == ENABLE)
& && && &USART1_RxData_buffer[USART1_ReadData_count] = USART_ReceiveData(USART1);
& && && &USART1_ReadData_count++;
& && && &if (USART1_ReadData_count == 1 && \
& && && &&&USART1_RxData_buffer[0] != 'A')
& && && &&&USART1_ReadData_count = 0;
& && &&&else if (USART1_ReadData_count == 2 && \
& && && && && &&&USART1_RxData_buffer[1] != 'X')
& && && &&&USART1_ReadData_count = 0;
& && &&&else if (USART1_ReadData_count == 3 && \
& && && && && &&&USART1_RxData_buffer[2] != 'X')
& && && &&&USART1_ReadData_count = 0;
& && && &if (USART1_ReadData_count &= 11)
& && && &&&USART1_Rx_Status = SET;
& && && &&&USART1_RxData_buffer[USART1_ReadData_count] = '\n';
& && && &&&USART1_RxData_buffer[USART1_ReadData_count+1] = '\0';
& && && &&&USART1_ReadData_count = 0;& &
& && &//串口接收
& && &if&&(USART_GetITStatus(USART1,USART_IT_TXE) == ENABLE)
& && && && & USART_ITConfig(USART1,USART_IT_TXE,DISABLE);
& && && && & USART1_Busy&&=&&RESET;
& && &上面的代码是串口中断应用函数,当发送寄存器为空时产生中断,清除串口忙标志,以便发送函数判断发送是否完成。
& && &void& && && && &USART1_Printf(uint8_t*& &String)
& && && &while&&(*String&&!=&&'\0')
& && && & {
& && && && && && & USART_SendData(USART1, (uint16_t)*String);
& && && && && && &&&USART_ITConfig(USART1,USART_IT_TXE,ENABLE);
& && && && && && &&&USART1_Busy&&=&&SET;
& && && && && &while (USART1_Busy&&==&&SET)
& && && && && &{
& && && && && && & Char_LED(ON);
& && && && && &}
& && && && && & String++;
& && && & }
& && && & USART_ITConfig(USART1,USART_IT_TXE,DISABLE);
& && && &上面是串口发送函数,发送完成时由中断函数清除串口忙标志;
& && && &下载程序后出现的现象是:程序启动时串口能够发送数据,比如我在主程序写这样一行代码:
& && && && &&&USART1_Printf(&power on\n&);
& && && & 串口助手能够看到打印信息;说明发送中断是可以工作的;但是当收到串口发来的字符串,再将字符串原样返回的时候 ,程序进入死循环了。在串口助手上只能看到第一个字符,其他字符打印不出来;说明程序发送第一个字符后进入死循环;分析程序,应该是死在这句:
& && && & while (USART1_Busy&&==&&SET)
& && && && && && && && &{
& && && && && && && && && && && & Char_LED(ON);
& && && &&&}
& && && &这个标志位是在串口中断函数中,清除的;难道没有产生串口中断????但是为什么这句:USART1_Printf(&power on\n&);能够打印出信息呢?
将发送改到串口2发送,收到的字符串能够原样返回。调试了两天,实在百思不得其解!!!难道STM32的串口不能同时使用发送和接收中断吗?
& && && &还望那位大侠能给小弟指点一二,不胜感激!!!!
00:04 上传
点击文件名下载附件
下载积分: ST金币 -1
4.94 MB, 下载次数: 121, 下载积分: ST金币 -1
完整工程文件
            
      
在线时间451 小时
ST金币1227
该用户从未签到主题帖子精华
USART_ITConfig(USART1, USART_IT_TXE,DISABLE);这里把发送中断关了;
if&&(USART_GetITStatus(USART1,USART_IT_TXE) == ENABLE)
& && && && & USART_ITConfig(USART1,USART_IT_TXE,DISABLE);
& && && && & USART1_Busy&&=&&RESET;
这个条件应该一直不会执行;
所以Busy一直为1吧
在线时间6 小时
该用户从未签到主题帖子精华
初级会员, 积分 55, 距离下一级还需 145 积分
USART_ITConfig(USART1, USART_IT_TXE,DISABLE);这里把发送中断关了;
if&&(USART_GetITStatus(USART1,US ...
& && &已经验证,不会是这个原因,程序中有两个地方关闭发送寄存器为空中断,一个在中断函数里、一个是当所有字符发送完成,遇到“\0”结束发送循环后,关闭发送寄存器为空中断,因为发送寄存器为空中断标志位必须通过写发送寄存器来清除,我的程序不上在中断函数写发送寄存器的,所以必须在响应中断后关闭中断请求;在发送函数里先写发送寄存器清除标志位,在开发送寄存器空中断请求:如下代码:
& & while&&(*String&&!=&&'\0')
& && && &&&{
& && && && && && &&&USART_SendData(USART1, (uint16_t)*String);
& && && && && && && &USART_ITConfig(USART1,USART_IT_TXE,ENABLE);
& && && && && && && &USART1_Busy&&=&&SET;
& && && && && & while (USART1_Busy&&==&&SET)
& && && && && & {
& && && && && && &&&Char_LED(ON);
& && && && && & }
& && && && && &&&String++;
& && && &&&}
& && && &不然的话,程序会一直在响应中断,不能处理发送函数,造成程序死循环;
& && &我在主循环中写这样一句:USART1_Printf(&main&&run is&&ok\n&);在没有通过串口助手发送字符串之前,一直可以看到程序不断打印出这个消息;如果通过串口发送一个字符串,程序返回我发送的字符串的第一个字符,然后就进入死循环了。
& &&&还是请再帮忙看看,是什么原因发送寄存器空中断没有响应?
            
      
在线时间999 小时
该用户从未签到主题帖子精华
帮顶。。。
在线时间451 小时
ST金币1227
该用户从未签到主题帖子精华
已经验证,不会是这个原因,程序中有两个地方关闭发送寄存器为空中断,一个在中断函数里、一个是当 ...
这样还是不好看,能把你的工程文件加上来吗
            
      
在线时间686 小时
ST金币4338
该用户从未签到主题帖子精华
1.jpg (5.19 KB, 下载次数: 0)
13:47 上传
在线时间6 小时
该用户从未签到主题帖子精华
初级会员, 积分 55, 距离下一级还需 145 积分
这样还是不好看,能把你的工程文件加上来吗
怎么上传附件呢?
第一次在论坛发帖,请多指教!!!
            
      
在线时间451 小时
ST金币1227
该用户从未签到主题帖子精华
怎么上传附件呢?
第一次在论坛发帖,请多指教!!!
压缩包,添加附件
在线时间6 小时
该用户从未签到主题帖子精华
初级会员, 积分 55, 距离下一级还需 145 积分
压缩包,添加附件
& &&&完整的工程文件已经附上, 请帮忙看看是什么问题造成一旦接收中断产生后,就不能产生发送中断了????在没有产生接收中断前,发送中断是可以正常工作的!!!
            
      
在线时间6 小时
该用户从未签到主题帖子精华
初级会员, 积分 55, 距离下一级还需 145 积分
& &需要帮忙看看程序出现了什么问题,顶贴不能解决什么问题,反而有借机赚分的嫌疑
站长推荐 /1
Tel: 3-8064
备案号: 苏ICP备号-2
|||意法半导体STM32/STM8技术社区
Powered by我昨天刚买的西部数据移动硬盘 1t 的,网上查询了很多说新买的硬盘应该分区,请问大侠们如何分区?

昨天我也下载了好几个分区的软件,又是格式化,又是分区的折腾了一晚上,结果差点把硬盘整坏!!呵呵, 有的说用电脑上的管理---磁盘管理 进行分区,但是我
按时间排序
把硬盘接到WIN7系统上,就可以正常分区和格式化了。XP系统不能格式化EXFAT硬盘很正常的。1TB的移动硬盘,建议分2区各500GB NTFS格式。这样在各类系统上要比单独的1TB分区兼容性好的多。
您可以邀请下面用户,快速获得回答
新手上路2000
擅长领域:&&
在装机硬件分类下共有14202个回答
擅长领域:&&&&
在装机硬件分类下共有6966个回答
擅长领域:&&&&
在装机硬件分类下共有3388个回答
疯狂的制帽匠
擅长领域:&&
在装机硬件分类下共有3285个回答
擅长领域:&&&&
在装机硬件分类下共有2444个回答
擅长领域:&&&&
在装机硬件分类下共有2047个回答
加载更多答主
感谢您为社区的和谐贡献力量请选择举报类型
经过核实后将会做出处理感谢您为社区和谐做出贡献
点击可定位违规字符位置
确定要取消此次报名,退出该活动?
请输入私信内容:

参考资料

 

随机推荐