打印
[STM32F1]

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

[复制链接]
716|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zyf部长|  楼主 | 2019-4-22 19:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用STM32F103在做串口是能发送一次数据包,第二次数据包就发送不了了

使用特权

评论回复
沙发
juventus9554| | 2019-4-22 19:13 | 只看该作者
STM32CubeMX导出的工程?

使用特权

评论回复
板凳
zyf部长|  楼主 | 2019-4-22 19:16 | 只看该作者

数据包如下。
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| | 2019-4-22 19:20 | 只看该作者

debug一下看看,应该在你那个发送数据包的函数里面的问题。

使用特权

评论回复
5
llljh| | 2019-4-22 19:22 | 只看该作者
测试的IO信号是否正常?

使用特权

评论回复
6
dingy| | 2019-4-22 19:25 | 只看该作者

楼主是不是程序没有配置好

使用特权

评论回复
7
pengf| | 2019-4-22 19:30 | 只看该作者
串口对方能够接收数据?

使用特权

评论回复
8
renyaq| | 2019-4-22 19:34 | 只看该作者
串口发送程序一般都能实现。

使用特权

评论回复
9
supernan| | 2019-4-22 19:37 | 只看该作者

应该是有寄存器的读取。

使用特权

评论回复
10
xxrs| | 2019-4-22 19:40 | 只看该作者
串口的实现就是一个配置程序,怎么还能第二次执行不了。

使用特权

评论回复
11
zyf部长|  楼主 | 2019-4-22 19:43 | 只看该作者

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

使用特权

评论回复
12
wowu| | 2019-5-10 10:50 | 只看该作者
贴上代码看看

使用特权

评论回复
13
xiaoqizi| | 2019-5-10 10:52 | 只看该作者
有的标志位没有清除吧

使用特权

评论回复
14
木木guainv| | 2019-5-10 10:58 | 只看该作者
也有可能没有设置寄存器

使用特权

评论回复
15
coshi| | 2019-5-22 13:18 | 只看该作者
楼主检查过相应的标志位吗

使用特权

评论回复
16
gwsan| | 2019-5-23 10:42 | 只看该作者
大不了就重新初始化

使用特权

评论回复
17
nawu| | 2019-5-23 11:13 | 只看该作者
实在找不到原因的话 就每次发送完就初始化一下

使用特权

评论回复
18
qcliu| | 2019-5-23 11:15 | 只看该作者
感觉楼上说的挺好  我就是这么干的

使用特权

评论回复
19
tfqi| | 2019-5-23 11:17 | 只看该作者
qcliu 发表于 2019-5-23 11:15
感觉楼上说的挺好  我就是这么干的

不过要是能找到问题就最好了

使用特权

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

本版积分规则

694

主题

7102

帖子

8

粉丝