GD32F450IEVM实现TCP服务器与串口透传实验

[复制链接]
2132|3
 楼主| xiaolu88856 发表于 2017-4-25 13:31 | 显示全部楼层 |阅读模式
本帖最后由 xiaolu88856 于 2017-4-25 13:36 编辑

本参考代码实现如下功能:(由于只能上传2M附件,完整功能无法提供,望见谅。)
1.  基于GD32F450IEVM的freeRTOS lwIP移植(代理商给的);

2. DMA 空闲中断实现;

3. 任务统计vTaskGetRunTimeStats的实现。



GD32F4系列的固件库有较大改动,TCP服务器与串口透传的重点在于第二点,详细代码见附件。

主要流程如下:
a.  gd_eval_com_init(EVAL_COM1);
b.     uart_init();
  1. void uart_init(void)
  2. {
  3.       nvic_irq_enable(USART0_IRQn, 3, 0);
  4.       usart_interrupt_enable(USART0,USART_INTEN_IDLEIE);
  5.       usart_dma_config();//详见代码
  6.       dma_channel_enable(DMA1, DMA_CH2);
  7.       usart_dma_receive_config(USART0, USART_DENR_ENABLE);
  8. }


c. 中断服务
  1. void USART0_IRQHandler(void)
  2. {
  3.     if(usart_interrupt_flag_get(USART0,USART_INT_IDLEIE) == SET)
  4.     {
  5.         //DMA挂起操作见10.4.9 P199
  6.         dma_channel_disable(DMA1, DMA_CH2);
  7.         DMA_INTC0(DMA1) |= DMA_FLAG_ADD(DMA_CHINTF_RESET_VALUE,DMA_CH2);
  8.         
  9.         //清除串口空闲中断
  10.         len = USART_STAT0(USART0);
  11.         len = USART_DATA(USART0);
  12.         
  13.         len = ARRAYNUM(rx_buffer) - DMA_CHCNT(DMA1, DMA_CH2);
  14.         
  15.         DMA_CHCNT(DMA1, DMA_CH2) = ARRAYNUM(rx_buffer);
  16.         DMA_CHM0ADDR(DMA1, DMA_CH2) =  (uint32_t)rx_buffer;
  17.         DMA_CHPADDR(DMA1, DMA_CH2) = USART0_DATA_ADDRESS;
  18.         
  19.         dma_channel_enable(DMA1, DMA_CH2);
  20.         
  21.         //释放二值信号量
  22.         if(BinarySemaphore!=NULL)//并且二值信号量有效
  23.         {
  24.             BaseType_t xHigherPriorityTaskWoken;
  25.             xSemaphoreGiveFromISR(BinarySemaphore,&xHigherPriorityTaskWoken);        //释放二值信号量
  26.             portYIELD_FROM_ISR(xHigherPriorityTaskWoken);//如果需要的话进行一次任务切换
  27.         }
  28.     }
  29. }


FreeRTOS_src.rar

30.65 KB, 下载次数: 29

 楼主| xiaolu88856 发表于 2017-4-25 13:36 | 显示全部楼层
自己顶下
dami 发表于 2017-4-26 14:42 | 显示全部楼层
好,顶一下
firstblood 发表于 2017-4-30 12:05 | 显示全部楼层
TCP数据透传的这方面的我没怎研究过的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

6

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部