首页 > 其他分享 >GD32F303移植FreeRTOS-Plus-CLI

GD32F303移植FreeRTOS-Plus-CLI

时间:2024-10-11 15:44:21浏览次数:8  
标签:enable FreeRTOS USART usart GD32F303 Plus GPIO USART1

FreeRTOS移植好是没有命令行交互的,刚好系统提供了相关的代码,那么就方便多了。
示例基于FreeRTOS-Kernel-9.0.0.zip,再次之前需要把系统移植完毕。
移植FreeRTOS-Plus-CLI需要干好几件事

  • 串口初始化
  • 串口终端服务函数
  • 添加自己定制的命令

下面讲添加哪些文件
新建一个分组,放CLI相关代码
image
添加如下文件
image
image
image
image

下面讲改动哪些文件

  • 串口初始化,将图片所示位置注释掉,换成自己GD32F303标准库代码,使用中断,未使用DMA
    image
点击查看代码
void UART1_Init(unsigned int baudrate)
{
    /* enable GPIO clock */
    rcu_periph_clock_enable(RCU_GPIOD);

    /* enable USART clock */
    rcu_periph_clock_enable(RCU_USART1);
	
	rcu_periph_clock_enable(RCU_AF);
	
	gpio_pin_remap_config(GPIO_USART1_REMAP,ENABLE);

    /* connect port to USARTx_Tx */
    gpio_init(GPIOD, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_5);

    /* connect port to USARTx_Rx */
    gpio_init(GPIOD, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_6);

    /* USART configure */
    usart_deinit(USART1);
    usart_baudrate_set(USART1, baudrate);
    usart_word_length_set(USART1, USART_WL_8BIT);      //设置数据位
	usart_parity_config(USART1, USART_PM_NONE);        //设置奇偶校验位
    usart_hardware_flow_rts_config(USART1, USART_RTS_DISABLE); 
	usart_hardware_flow_cts_config(USART1, USART_CTS_DISABLE); //无硬件数据流控制
    usart_receive_config(USART1, USART_RECEIVE_ENABLE);
    usart_transmit_config(USART1, USART_TRANSMIT_ENABLE);
    
    nvic_priority_group_set(NVIC_PRIGROUP_PRE4_SUB0);

    nvic_irq_enable(USART1_IRQn, 15, 0);//配置NVIC分组,初始化NVIC分组4
	usart_interrupt_enable(USART1, USART_INT_RBNE);//使能接收中断

    
    usart_enable(USART1);
    

}

这里需要特别注意!!nvic_priority_group_set(NVIC_PRIGROUP_PRE4_SUB0);关于这里,请看FreeRTOS串口中断优先级设置

  • 更改中断服务函数,这里需要将serial.c中所有关于串口的函数改为GD32标准库
点击查看代码
void USART1_IRQHandler( void )// vUARTInterruptHandler( void )
{
portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
char cChar;

	if( usart_interrupt_flag_get( USART1, USART_INT_FLAG_TBE ) == SET )
	{
		/* The interrupt was caused by the THR becoming empty.  Are there any
		more characters to transmit? */
		if( xQueueReceiveFromISR( xCharsForTx, &cChar, &xHigherPriorityTaskWoken ) == pdTRUE )
		{
			/* A character was retrieved from the queue so can be sent to the
			THR now. */
			usart_data_transmit( USART1, cChar );
            while(RESET == usart_flag_get(USART1, USART_FLAG_TBE));
		}
		else
		{
			usart_interrupt_disable( USART1, USART_INT_TBE );		
		}		
	}
	
	if( usart_interrupt_flag_get( USART1, USART_INT_FLAG_RBNE ) == SET )
	{
		cChar = usart_data_receive( USART1 );

		xQueueSendFromISR( xRxedChars, &cChar, &xHigherPriorityTaskWoken );
	}	
	
	portEND_SWITCHING_ISR( xHigherPriorityTaskWoken );
}

标签:enable,FreeRTOS,USART,usart,GD32F303,Plus,GPIO,USART1
From: https://www.cnblogs.com/njit-sam/p/18458561

相关文章

  • Freertos应用与源码分析:临界区
    目录一、概述二、应用三、源码分析1、进入临界区2、退出临界区3、中断临界区(1)应用(2)进入中断临界区(3)退出中断临界区四、注意事项一、概述        当一个任务在使用某个资源的过程中,即还没有完全结束对资源的访问时,便被切出运行态,使得资源处于非一致,不完整......
  • [MyBatis-Plus]快速入门
    介绍MyBatis-Plus是MyBatis的好朋友,与MyBatis配合,实现开发效率的提高官网:特点:润物细无声:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑效率自上:只需简单配置,即可快速进行单表CRUD,从而节省大量时间功能丰富:代码生产,自动分页,逻辑删除......
  • 模拟一个微服务架构项目来学习包括Nacos、EMQX、GateWay、RabbitMQ、Canal、Mybatis-P
    前言介绍下最近做的项目:为什么做这个项目?项目的核心用户目标是谁?面向新能源电车用户给目标用户提供了什么价值?方便快捷充电服务团队的作用?需求分析,概要设计,详细设计,开发,测试,部署,上线我的作用?1-2两个核心业务详细设计(业务流程,接口入参,接口出参,表结......
  • Linux !ko/5.17-BBRplus AMD64(X86_64)内核致命的 futex_wait 函数死锁问题。
    !ko表示系统内核(system-kernel)致命:在CentOS(RedHat)、Ubuntu、Debian等多个发行版本Linux操作系统上,若人们升级 5.17-BBRplus版本内核,那么在应用程式频繁的futex_wait(syscall)等待唤醒时,或会存在futex_wait函数发生死锁的疑难问题。LMP:futex(2)-Linuxmanualpa......
  • 将 OnePlus 手机备份到 PC 的 5 种最佳方法
    一加手机以其合理的价格和卓越的性能赢得了众多用户的喜爱。一加12为用户带来了高达1TB的存储空间,这无疑让用户可以更加自由地存储各种数据。为了保护重要数据不因意外删除、恢复出厂设置、病毒攻击、系统崩溃等各种原因而丢失,有必要为您的一加手机进行备份。这样,当灾难发生并......
  • 基于Vue3+pinia+vue-router+axios+element-plus等开发的新闻发布管理系统
    新闻发布管理系统是一个基于Vue3+pinia+vue-router+axios+element-plus等开发的系统,主要功能包括:登录模块、注册模块、新闻分类管理模块、新闻管理模块、个人中心模块(包括基本资料、更换头像、重置密码功能)等。代码下载:源码下载基于Vue3开发的新闻发布管理系统,使用的前端......
  • NanoDet-Plus: 超快速轻量级无锚点目标检测模型
    NanoDet-Plus:超快速轻量级无锚点目标检测模型NanoDet-Plus是一个超快速、高精度的轻量级无锚点目标检测模型,由RangiLyu开发并开源。它在保持高检测精度的同时,具有极小的模型体积和极快的推理速度,可以在移动设备上实现实时目标检测。主要特点NanoDet-Plus具有以下突出特点:......
  • MyBatis-Plus 的核心插件及其使用介绍
    MyBatis-Plus是基于MyBatis的增强工具,为简化MyBatis的开发提供了诸多功能扩展。它的目标是减少重复代码、提高开发效率,提供了CRUD(Create,Read,Update,Delete)操作的简化方法以及多种实用插件。以下是MyBatis-Plus的核心插件及其使用介绍:1.分页插件(PaginationInt......
  • 20241009--Java--MyBatis-Plus快速上手(1)
     一、MyBatis-Plus是什么?MyBatis是一个流行的开源持久层框架,用于简化数据库交互。它提供了一个简单的方法来执行数据库操作,同时保留了SQL的灵活性。MyBatis曾经被称为iBatis,是一个半自动化的ORM(Object-RelationalMapping对象关系映射)框架,它允许开发者将Java对象映......
  • 铁威马新品F8 SSD Plus:假期出行的完美存储“伙伴”
    国庆小长假刚刚结束大家都去哪里玩了呢?假期出行如何安全、便捷地存储和管理大量的照片、视频和其他文件也是一个不容忽视的问题 铁威马秋季系列新品NAS的发售为我们提供了多种选择  而F8SSDPlus性能与便携的完美融合成为假期出行不可或缺的“好伙伴” F8......