FreeRTOS Day2

1.总结串口的发送和接收功能使用到的函数

串口发送数据函数:
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout);
                                
                        UART_HandleTypeDef *huart:指定我们使用的哪个串口,需要指定串口1
                        const uint8_t *pData:要发送的数据
                        uint16_t Size:要发送的数据的长度
                         uint32_t Timeout:超时时间,单位是ms,在规定时间没有将数据发送出去就会退                                                         出当前函数,执行下一句代码。
                          HAL_StatusTypeDef:是否成功发送数据

串口接收数据函数:
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
                
                UART_HandleTypeDef *huart:从哪个串口中接收数据
                uint8_t *pData:数据保存的地址
                uint16_t Size:一次需要接收多少个字节数据
                HAL_StatusTypeDef:是否成功开启串口接收

DMA串口发送函数:
HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size)
                                        
                UART_HandleTypeDef *huart:指定要给哪个串口发送数据
                const uint8_t *pData:要发送的数据
                uint16_t Size:要发送数据的长度
                HAL_StatusTypeDef:是否发送成功数据    


DMA+空闲中断中断的方式接收数据:
HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

                UART_HandleTypeDef *huart:从哪个串口去接收数据
                uint8_t *pData:数据保存的地址
                uint16_t Size:每次要接收多少个数据
                HAL_StatusTypeDef:是否成功开启DMA+空闲中断

2.总结DMA的作用,和DMA+空闲中断的使用方式

DMA:直接存储器,用来提供在外设和存储器之间或存储器和存储器之间的高速数据传输。优点是:使用DMA可以减轻cpu负担,提升CPU的资源利用率,DMA传输数据快,适用于处理图片、视频、音频等数据量较大的场合。
空闲中断:串口在一段时间(发送一个字节的数据的时间)后没有数据到达就会产生一个空闲中断。
以DMA和空闲中断中断的方式接收数据:
HAL_UARTEx_ReceiveToIdle_DMA(接收数据的串口,数据保存的地址,每次接收的数据),返回值是是否成功开启DMA+空闲中断

3.使用PWM+ADC光敏电阻完成光控灯的实验

int adc_val=0;//用于保存ADC采样得到的数值
float volt=0;//用于保存电压值
int main(void)
{
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_TIM1_Init();
  MX_USART1_UART_Init();
  MX_ADC_Init();
  MX_TIM3_Init();
    
  HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_3);//打开定时器通道3
  int i=0;
 
  while (1)
  {	
	 //开启ADC采样
	 HAL_ADC_Start(&hadc);
 
	 //获取ADC采样的值
	 adc_val=HAL_ADC_GetValue(&hadc);
 
	 //将采样值转换为电压值
	 volt=adc_val/4095.0f*3.3f;
	
     //通过电压改变LED灯的亮度,光照越强,电压越低,则LED灯越暗;
     //反之,光照越弱,电压越高,则LED灯越亮
     i= volt/3.3f * 999;
     TIM3->CCR3 = i;
    
   }
  }

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: FreeRTOS V2 是一个实时操作系统(RTOS),V2 API 是它的应用程序编程接口。 FreeRTOS 是一个广泛应用于嵌入式系统的开源实时操作系统。它提供了可靠的任务调度、时间管理、内存管理和通信机制,使开发者能够轻松地编写出高效、可靠的嵌入式应用程序。 V2 API 是 FreeRTOS 的应用程序编程接口的第二个版本。它提供了一组函数和数据结构,用于控制和管理 FreeRTOS 内核的各个部分。通过这些 API,开发者可以创建和管理任务、队列、信号量、互斥锁等系统资源,实现任务间的通信和同步。 V2 API 在原有的 API 基础上进行了一些增强和改进。它增加了更多的功能和特性,提供了更丰富的资源管理和任务调度机制,提高了系统的可靠性和效率。 使用 FreeRTOS V2 API,开发者可以轻松地编写出符合实时要求的嵌入式应用程序。他们可以通过创建任务和使用任务通信机制,实现系统中不同任务之间的并发执行和数据传输。他们还可以使用 V2 API 中提供的事件标志和定时器功能,实现任务的同步和定时控制。 总之,FreeRTOS V2 API 是 FreeRTOS 实时操作系统的应用程序编程接口的第二个版本。它提供了一种方便、高效的方式来使用 FreeRTOS 的功能和特性,使开发者能够轻松地开发出符合实时要求的嵌入式应用程序。 ### 回答2: FreeRTOS是一个开源的实时操作系统内核,是由迈克尔·贝瑞(Michael Barry)创建的。它提供了一个可移植的、可扩展的、可定制的操作系统内核,用于嵌入式系统和实时应用。其中,FreeRTOS V2是FreeRTOS的第二个主要版本。 FreeRTOS V2提供了一些新的API接口和功能,以增强原有版本的功能和性能。它引入了动态任务优先级分配、任务通知和DMA支持,并对进行多核操作和IPC(进程间通信)做出了改进。同时,FreeRTOS V2添加了一些通用的编程接口,以提供更多的灵活性和互操作性。 在FreeRTOS V2中,新增的任务通知机制使得任务之间可以更加方便地进行通信和同步。它允许任务发送信号给其他任务,以通知其有任务需要处理。这个机制在实时系统中非常有用,可以提高系统的响应性和效率。 此外,FreeRTOS V2还引入了DMA支持,可以通过DMA传输数据,从而减少CPU的负担,提高系统的效率和响应速度。 另外的改进包括使用动态任务优先级分配,可以根据不同任务的优先级动态地分配系统资源,使得系统更加灵活。 总之,FreeRTOS V2作为FreeRTOS的新版本,通过新增API接口和功能的方式,进一步提升了它的功能和性能,使得嵌入式系统和实时应用能够更加高效地运行。 ### 回答3: FreeRTOS是一个开源的即时操作系统内核,提供轻量级的任务调度和资源管理功能,针对嵌入式系统设计开发。目前最新版本是FreeRTOS V10.4.1。 FreeRTOS V2 API是FreeRTOS内核的一种编程接口,用于实现任务的创建、删除、挂起和恢复等操作。V2 API是在旧版本API基础上进行了优化和扩展,提供了更强大和灵活的功能。 V2 API引入了任务通知功能,可以在任务之间进行通信和同步操作。通过信号量和消息队列等机制,任务可以共享和传递数据。这大大简化了任务之间的协作和数据交换。 V2 API还增加了事件组功能,可以用于等待和通知多个事件的发生。任务可以根据不同的事件发生状态执行不同的操作。这在多任务并发和同步控制方面非常有用。 另外,V2 API还提供了软件定时器功能,可以用于定期执行一些操作。这对于周期性任务和定时操作非常有帮助。 总之,FreeRTOS V2 API拓展了旧版本API的功能,提供了更多的任务管理和同步机制,使得嵌入式系统开发更加灵活和方便。它广泛应用于各种类型的嵌入式系统,并受到开发者的广泛欢迎。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值