前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开发者成长激励计划-基于TencentOS Tiny 的UART重映射

开发者成长激励计划-基于TencentOS Tiny 的UART重映射

原创
作者头像
用户9824671
修改2022-07-23 21:56:40
5880
修改2022-07-23 21:56:40
举报
文章被收录于专栏:沁恒沁恒

初次接触RISC-V的单片机,也是初次接触TencentOS系统,还在努力学习中,最近用到了重映射功能,与大家分享。

单片机为沁恒的CH32V307VCT6,板子为TencentOS RISC-V 开发板,程序是在例程EXAM-Demo-Project中做的修改。

原计划是使用UART7扩展几个传感器上传云端,但是UART7的接收有点bug,无法触发中断,原因未知。幸好发现在沁恒的CH32FV2x_V3x 系列应用手册中提到了重映射功能,在AFIO_PCFR1寄存器中可以将USART3映射到了PD8和PD9引脚。

程序方面实现了UART3的接收中断将收到的数据发回,task1 将接收数据的长度显示出来。

重映射程序如下:

代码语言:javascript
复制
    GPIO_InitTypeDef  GPIO_InitStructure={0};
    USART_InitTypeDef USART_InitStructure={0};
    NVIC_InitTypeDef  NVIC_InitStructure={0};

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD , ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO , ENABLE);//时钟

    GPIO_PinRemapConfig(GPIO_FullRemap_USART3,ENABLE);//重映射

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOD, &GPIO_InitStructure);// IO
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOD, &GPIO_InitStructure);// IO

将接收中断的数据发回的代码就很容易实现了。

代码语言:javascript
复制
void USART3_IRQHandler(void)
{

    if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
    //if(USART3->STATR &(1<<5))
  {
      co_data_RX[co_datanum]= USART_ReceiveData(USART3);
      USART_SendData(USART3,co_data_RX[co_datanum]);
      co_datanum++;

  //    tos_at_uart_input_byte(&esp8266_tf_agent,data);
  }

}

显示的程序也很简单

代码语言:javascript
复制
void task1_entry(void *arg)
{

    while (1)
    {
        LCD_ShowString(30,140+16+16+16+16,"UASRT3 Receive: ",WHITE,BLACK,16,0);
        LCD_ShowIntNum(30+16*8,140+16+16+16+16,co_datanum,5,WHITE,BLACK,16);
        LCD_ShowString(30+22*8,140+16+16+16+16,"Bytes",WHITE,BLACK,16,0);

        tos_task_delay(2000);
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
TencentOS Server
TencentOS Server 是腾讯云推出的 Linux 操作系统,它旨在为云上运行的应用程序提供稳定、安全和高性能的执行环境。它可以运行在腾讯云 CVM 全规格实例上,包括黑石物理服务器2.0。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com