[STM32F1]

第二次数据包就发送不了了

[复制链接]
492|23
手机看帖
扫描二维码
随时随地手机跟帖
zyf部长|  楼主 | 2021-4-8 22:46 | 显示全部楼层 |阅读模式
用STM32F103在做串口是能发送一次数据包,第二次数据包就发送不了了

使用特权

评论回复
juventus9554| | 2021-4-8 22:55 | 显示全部楼层
STM32CubeMX导出的工程?

使用特权

评论回复
zyf部长|  楼主 | 2021-4-8 22:57 | 显示全部楼层

数据包如下。
void USC512C_SendSetupData1(UART_HandleTypeDef *huart,uint8_t ch, uint16_t IcNum)
{
    uint8_t i;
    uint8_t *da;

    if(ch==1) da = ICDATA11;
    else if(ch==2) da = ICDATA21;
    else da = ICDATA41;

    //Set reset 0 times 2s
    __HAL_UART_DISABLE(huart);
    //__HAL_UART_ENABLE(huart);
    HAL_GPIO_WritePin(PB10_OutPin_GPIO_Port, PB10_OutPin, GPIO_PIN_RESET);
    HAL_TIM_Base_Start_IT(&htim6);
    while(flag2s);        //调试时停在第二次的这儿过不去了。
    flag2s = 1;
    printf(">>> Set IC 2s reset OK ......\r\n");

    //8us高电平
    HAL_GPIO_WritePin(PB10_OutPin_GPIO_Port, PB10_OutPin, GPIO_PIN_SET);
    delayXus(8);

    //发送Start Code 0x00;
    //__HAL_UART_DISABLE(huart);
    __HAL_UART_ENABLE(huart);
    HAL_UART_Transmit(huart,(uint8_t*)DATA0,1,0xff);
    //等待发送完毕
    while(__HAL_UART_GET_FLAG(huart,UART_FLAG_TC)!=SET);
    printf(">>> Set IC send Start Code 0x00 OK ......\r\n");

    //send Heigh "W"  W>176us;
    __HAL_UART_DISABLE(huart);
    //__HAL_UART_ENABLE(&huart3);
    HAL_GPIO_WritePin(PB10_OutPin_GPIO_Port, PB10_OutPin, GPIO_PIN_SET);
    delayXus(176);
    printf(">>> Set IC 'W' OK ......\r\n");

    for(i=0; i<IcNum; i++)
    {
        //发送11位数据
        //__HAL_UART_DISABLE(&huart3);
        __HAL_UART_ENABLE(huart);
        HAL_UART_Transmit(huart,(uint8_t*)da,11,0xff);
        //等待发送完毕
        while(__HAL_UART_GET_FLAG(huart,UART_FLAG_TC)!=SET);

        //send Heigh "W"  W>176us;
        __HAL_UART_DISABLE(huart);
        //__HAL_UART_ENABLE(huart);
        HAL_GPIO_WritePin(PB10_OutPin_GPIO_Port, PB10_OutPin, GPIO_PIN_SET);
        delayXus(176);

    }
    printf(">>> IC data updata1 OK ......\r\n");
}

主函数调用如下:
int main(void)
{

  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration----------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART3_UART_Init();
  MX_TIM3_Init();
  MX_TIM2_Init();
  MX_TIM6_Init();
  MX_TIM7_Init();
  MX_USART1_UART_Init();

  /* Initialize interrupts */
  MX_NVIC_Init();

  /* USER CODE BEGIN 2 */
        BSP_Data_Init();
        
        USC512C_SendSetupData1(&huart3,2, 100);          //第一个可以发送。


        USC512C_SendSetupData2(&huart3,2, 100);         //第二个就发送不了了。除了数据不一样,其他都与第一个一样。

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
  /* USER CODE END WHILE */


  /* USER CODE BEGIN 3 */

  }
  /* USER CODE END 3 */

}


调试的时候在发送函数的定时器处,红色标记的地方,过不去了。

使用特权

评论回复
stly| | 2021-4-8 22:59 | 显示全部楼层
debug一下看看,应该在你那个发送数据包的函数里面的问题。

使用特权

评论回复
llljh| | 2021-4-8 23:02 | 显示全部楼层
测试的IO信号是否正常?

使用特权

评论回复
dingy| | 2021-4-8 23:04 | 显示全部楼层
楼主是不是程序没有配置好

使用特权

评论回复
pengf| | 2021-4-8 23:06 | 显示全部楼层
串口对方能够接收数据?

使用特权

评论回复
renyaq| | 2021-4-8 23:08 | 显示全部楼层
串口发送程序一般都能实现。

使用特权

评论回复
supernan| | 2021-4-8 23:12 | 显示全部楼层
应该是有寄存器的读取。

使用特权

评论回复
xxrs| | 2021-4-8 23:14 | 显示全部楼层
串口的实现就是一个配置程序,怎么还能第二次执行不了。

使用特权

评论回复
heweibig| | 2021-4-8 23:16 | 显示全部楼层
贴上代码看看

使用特权

评论回复
zwll| | 2021-4-8 23:21 | 显示全部楼层
有的标志位没有清除吧

使用特权

评论回复
dingy| | 2021-4-8 23:23 | 显示全部楼层
也有可能没有设置寄存器

使用特权

评论回复
heweibig| | 2021-4-8 23:25 | 显示全部楼层
楼主检查过相应的标志位吗

使用特权

评论回复
wangzsa| | 2021-4-8 23:27 | 显示全部楼层
大不了就重新初始化

使用特权

评论回复
jlyuan| | 2021-4-8 23:30 | 显示全部楼层
实在找不到原因的话 就每次发送完就初始化一下

使用特权

评论回复
xxrs| | 2021-4-8 23:32 | 显示全部楼层
感觉楼上说的挺好  我就是这么干的

使用特权

评论回复
yinxiangh| | 2021-4-8 23:34 | 显示全部楼层
不过要是能找到问题就最好了

使用特权

评论回复
zyf部长|  楼主 | 2021-4-8 23:36 | 显示全部楼层

唉,还是没有什么结果,算了,多谢大家啦

使用特权

评论回复
paotangsan| | 2021-5-6 16:30 | 显示全部楼层
第二次不能发送的现象是什么

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

694

主题

7102

帖子

8

粉丝