4.17freeRTOS

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

串口的数据发送

HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout)
  • UART_HandleTypeDef *huart:指定要使用的串口

    • const uint8_t *pData:要发送的数据

  • const uint8_t *pData:要发送的数据

  • uint16_t Size:要发送的数据字节数(数据的长度),strlen可以计算字符串的长度,使用sizeof计算的是字符串所占内存的大小

  • 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:是否成功开启串口接收功能

串口的数据接收

处理定长数据

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+空闲中断方式接收长度不确定的数据

类似于LED ON和LED OFF这种长度的不确定的数据。

HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
  • UART_HandleTypeDef *huart:要给哪个串口发送数据

  • const uint8_t *pData:要发送什么数据

  • uint16_t Size:每次要发送多少个字节数据

  • HAL_StatusTypeDef:是否发送成功

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

DMA可以减轻CPU的负担,提高CPU的运行效率。提高数据传输效率和性能。高速传输数据。

配置ADC模块:首先需要配置ADC模块的参数,包括采样通道、采样精度、采样速率等。可以使用STM32CubeMX工具进行配置,或者手动编写代码进行配置。
配置DMA:使用DMA(直接内存访问)可以实现数据的高速传输,减少CPU的负载。配置DMA通道,将ADC的转换结果传输到指定的内存地址。
配置空闲中断:在DMA传输完成后,可以通过空闲中断来触发处理数据的操作。在空闲中断中可以读取DMA传输的数据,并进行相应的处理。
根据采样数值调节LED灯亮度:根据光敏电阻的采样数值,可以确定环境光的强度。根据需求,可以通过PWM(脉冲宽度调制)控制LED灯的亮度。根据采样数值的大小,调整PWM的占空比,从而改变LED灯的亮度。

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

	while(1)
    {
        HAL_ADC_Start(&hadc);
		adc_val = HAL_ADC_GetValue(&hadc);
		volt = adc_val / 4095.0f*3.3f ;
		if(volt >= 0.70)
		{
			TIM3->CCR3 =adc_val/4095.0f*500;
		}
		else
		{
			TIM3->CCR3 =1;
		}
		HAL_Delay(1);
	}

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值