搜索

[技术问答] hc32f460串口发送

[复制链接]
2391|6
手机看帖
扫描二维码
随时随地手机跟帖
yangjiaoshai|  楼主 | 2021-9-10 11:00 | 显示全部楼层 |阅读模式
94154613aca0711724.png
发数,不知道哪里出问题了,设置发送11次,只有9个数出来,设置13,才有11个数据发送出来
46652613ac9f2af0bd.png

使用特权

评论回复
tianmeijiao| | 2021-9-10 11:24 | 显示全部楼层
CH340为什么导致蓝屏啊?

使用特权

评论回复

评论

martinhu 2021-9-10 13:57 回复TA
CH340的驱动问题吧 
martinhu| | 2021-9-10 13:56 | 显示全部楼层
你用的例程吗?是MCU收到什么回复什么?

使用特权

评论回复
yangjiaoshai|  楼主 | 2021-9-13 14:32 | 显示全部楼层
本帖最后由 yangjiaoshai 于 2021-9-13 14:34 编辑
martinhu 发表于 2021-9-10 13:56
你用的例程吗?是MCU收到什么回复什么?

自己照着论坛和手册改的一个模板出来,
发送函数:
void    usart_send(uint8_t *pbuff, uint16_t  size)
{
    uint16_t i;

    DMA_SetBlockSize(DMA_UNIT1, DMA_CH1_TX, 1);
    DMA_SetTransferCnt(DMA_UNIT1, DMA_CH1_TX, 13);
    DMA_SetSrcAddress(DMA_UNIT1, DMA_CH1_TX, (uint32_t)(uart1_rcv));
    DMA_ChannelCmd(DMA_UNIT1, DMA_CH1_TX, Enable);
                DMA_ClearIrqFlag(DMA_UNIT1, DMA_CH1_TX, TrnCpltIrq);
    USART_FuncCmd(USART_CH1, UsartTx, Enable);
    USART_FuncCmd(USART_CH1, UsartTxEmptyInt, Enable);
}
发送DMA配置:

static void DmaUartTxInit(void)
{
        
    stc_dma_config_t stcDmaInitTX;
    stc_irq_regi_conf_t stcIrqRegiCfgTX;

    /* Enable peripheral clock */
    PWC_Fcg0PeriphClockCmd(PWC_FCG0_PERIPH_DMA1 | PWC_FCG0_PERIPH_DMA2,Enable);

    /* Enable DMA. */
    DMA_Cmd(DMA_UNIT1,Enable);

    /* Initialize DMA. */
    MEM_ZERO_STRUCT(stcDmaInitTX);
    stcDmaInitTX.u16BlockSize = 1u; /* 1 block */
                stcDmaInitTX.u16TransferCnt = 11u;
    stcDmaInitTX.u32SrcAddr = (uint32_t)(uart1_TX); /* Set source address. */
    stcDmaInitTX.u32DesAddr = ((uint32_t)(&USART_CH1->DR));//&USART_CH->DR);     /* Set destination address. */
    stcDmaInitTX.stcDmaChCfg.enSrcInc = AddressIncrease;  /* Set source address mode. */
    stcDmaInitTX.stcDmaChCfg.enDesInc = AddressFix;  /* Set destination address mode. */
    stcDmaInitTX.stcDmaChCfg.enIntEn = Enable;       /* Enable interrupt. */
    stcDmaInitTX.stcDmaChCfg.enTrnWidth = Dma8Bit;   /* Set data width 8bit. */


    DMA_InitChannel(DMA_UNIT1, DMA_CH1_TX, &stcDmaInitTX);


    /* Set DMA trigger source. */
    DMA_SetTriggerSrc(DMA_UNIT1, DMA_CH1_TX, EVT_USART1_TI);

    /* Set DMA block transfer complete IRQ */
    stcIrqRegiCfgTX.enIRQn = Int003_IRQn;//DMA_BTC_TX_INT_IRQn;//DMA_BTC_INT_IRQn;//int numb
    stcIrqRegiCfgTX.pfnCallback = &DmaTXBtcIrqCallback;//callback fun
    stcIrqRegiCfgTX.enIntSrc = INT_DMA1_TC1;//DMA_BTC_TX_INT_NUM;//int sourc
    enIrqRegistration(&stcIrqRegiCfgTX);
    NVIC_SetPriority(stcIrqRegiCfgTX.enIRQn, DDL_IRQ_PRIORITY_DEFAULT);
    NVIC_ClearPendingIRQ(stcIrqRegiCfgTX.enIRQn);
    NVIC_EnableIRQ(stcIrqRegiCfgTX.enIRQn);
}

电脑发数给板子,板子收到数据后,置一个标志,然后去主while里去调用发送函数,发送长度是直接设置的,与接收数据个数没关系。接收数组长度为20,大于发送数据的个数

使用特权

评论回复
kiwis66| | 2021-9-13 14:42 | 显示全部楼层
就是总差两个?
回车换行?

使用特权

评论回复
martinhu| | 2021-9-14 13:54 | 显示全部楼层
你这里的发送框里面只有11个字节啊,发送的数组定义是多长???
期望它回复多出两个字节?
54811614038b72be3f.png

使用特权

评论回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

本版热帖

本版活跃用户

优质原创写原创,赢大奖

编辑推荐

  • 1 火星国务卿 得到打赏 ¥430.00
  • 2 yanzhengxin1 得到打赏 ¥350.00
  • 3 qbwww 得到打赏 ¥245.00
  • 4 Gavin3389 得到打赏 ¥225.00
  • 5 13426257085 得到打赏 ¥200.00
  • 6 呐咯密密 得到打赏 ¥185.00
  • 7 yangjiaxu 得到打赏 ¥155.00
  • 8 两只袜子 得到打赏 ¥155.00
  • 9 elephant00 得到打赏 ¥150.00
  • 10 cr315 得到打赏 ¥150.00
在线客服 快速回复 返回顶部 返回列表