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

stm32 串口接收字符串的问题

[复制链接]
wuhong377 提问时间:2014-3-24 15:59 /
#include
#include "hw_config.h"
        u8 tab[5];
        u8 z=0;
        u8 *p_uart1=tab;
        int Flag=0;
/** @addtogroup STM32F10x_StdPeriph_Template
  * @{
  */
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/

/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
/**
        *名称:void Delay(void)
        *参数:无
        *返回:无
        *功能:简单延时
**/
void Delay(void)
{
        int x,y;
        for(x=1000;x>0;x--)
                for(y=1000;y>0;y--);
}
/**
  * @brief  Main program.
  * @param  None
  * @retval None
  */

int main(void)
{       
        u8 table[5];
        u8 *p=table;
        int i;
           SystemInit();                  /*系统初始化*/
        LED_Configuration();
        USART_Configuration();
        ADC_Configuration();
        while (1)
        {
                LED1(1);
                Delay();
                LED1(0);
                Delay();
                if(Flag=1)//接收中断
                {
                       
                        for(i=0;i
收藏 1 评论16 发布时间:2014-3-24 15:59

举报

16个回答
wuhong377 回答时间:2014-3-25 15:06:40

RE:stm32 串口接收字符串的问题

已经按照六楼的说明改了程序
#include
#include "hw_config.h"
        u8 uart1_buf[5];
        int count1=0;
        int Flag=0;
/** @addtogroup STM32F10x_StdPeriph_Template
  * @{
  */
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/

/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
/**
        *名称:void Delay(void)
        *参数:无
        *返回:无
        *功能:简单延时
**/
void Delay(void)
{
        int x,y;
        for(x=1000;x>0;x--)
                for(y=1000;y>0;y--);
}
/**
  * @brief  Main program.
  * @param  None
  * @retval None
  */

int main(void)
{       
        /* Add your application code here
        */
//        u16 adcx1,adcx2,temp;
        u8 table[5];
        u8 *p=table;
//        int i;
           SystemInit();                  /*系统初始化*/
        LED_Configuration();
        USART_Configuration();
        ADC_Configuration();
        while (1)
        {
                LED1(1);
                Delay();
                LED1(0);
                Delay();
                if(Flag==1)//接收中断
                {
                       
                        for(count1=0;count1 5)
               {
                   Flag = 1;
                  count1 = 0;
              }
                       
   }
}
这样子改 了之后 串口调试助手也是一个字符都收不到。 这是为什么。也就是说都没有判断到Flag=1么;
我编写的想法是:串口调试助手发送五个字节的数,stm32采用中断接收并返回给串口调试助手。 求大神们帮帮忙。
那片清茶 回答时间:2014-3-24 19:32:46

回复:stm32 串口接收字符串的问题

  if(Flag=1)//接收中断  这句话语法有问题,。
还有你中断接收里面也有问题。自己看看吧。
wuhong377 回答时间:2014-3-25 08:40:54

回复:stm32 串口接收字符串的问题

回复第 2 楼 于2014-03-24 19:32:46发表:
  if(Flag=1)//接收中断  这句话语法有问题,。
还有你中断接收里面也有问题。自己看看吧。
 
什么问题能不能帮忙说一下, 新手不懂,求大神指导。
 
那片清茶 回答时间:2014-3-25 08:54:23

RE:stm32 串口接收字符串的问题

if(Flag=1) 你觉得语法没问题?
wuhong377 回答时间:2014-3-25 09:02:46

回复:stm32 串口接收字符串的问题

回复第 3 楼 于2014-03-25 08:40:54发表:
回复第 2 楼 于2014-03-24 19:32:46发表:
  if(Flag=1)//接收中断  这句话语法有问题,。
还有你中断接收里面也有问题。自己看看吧。
 
什么问题能不能帮忙说一下, 新手不懂,求大神指导。

 
  if(Flag=1)//接收中断 这个该为了:  if(Flag==1)//接收中断 
中断里面的问题能够解释一下么,哥
 

 
那片清茶 回答时间:2014-3-25 09:17:25

回复:stm32 串口接收字符串的问题

 我仔细看了下,问题倒是没有,不过你可以这样写:
        if(USART_GetITStatus(USART1, USART_IT_RXNE)==SET)          
  {
                uart1_buf[count1++] = USART_ReceiveData(USART1);
                USART_ClearITPendingBit(USART1,USART_IT_RXNE);
                if(count1 > 10)
               {
                   flag = 1;
                  count1 = 0;
              }
                       
   }
 
wuhong377 回答时间:2014-3-25 10:42:43

回复:stm32 串口接收字符串的问题

回复第 6 楼 于2014-03-25 09:17:25发表:
 我仔细看了下,问题倒是没有,不过你可以这样写:
        if(USART_GetITStatus(USART1, USART_IT_RXNE)==SET)          
 
  {
                uart1_buf[count1++] = USART_ReceiveData(USART1);
                USART_ClearITPendingBit(USART1,USART_IT_RXNE);
                if(count1 > 10)
               {
                   flag = 1;
                  count1 = 0;
              }
                       
   }
 改了 还是不行,上传了程序,麻烦大神看看其他的配置有没有问题。。
 
 

中断接收返回.rar

下载

2.31 MB, 下载次数: 90

story_xjj 回答时间:2014-3-25 11:09:16

RE:stm32 串口接收字符串的问题

if(z
wuhong377 回答时间:2014-3-25 18:42:10

RE:stm32 串口接收字符串的问题

谢谢各位了 发现问题了。 是NVIC_Configuration(); 这个忘记声明了。 现在可以接收和返回多个数值了。  

有个新的问题,为什么返回的数据中发现第一位数据丢失了呢?
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版