freertos作业day2

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

1.)

HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart,

        const uint8_t *pData,

        uint16_t Size,

        uint32_t Timeout);

osThreadId_t:返回创建任务的ID

osThreadFunc_t:void (*osThreadFunc_t) (void *argument):函数指针类型,任务的入口函数

void *argument:传递给任务入口函数的参数

const osThreadAttr_t *attr:用于描述任务的属性

eg:HAL_UART_Transmit(&huart1, "Hello World\r\n", sizeof("Hello World\r\n") - 1, 1000);

2.)

int fputc(int ch, FILE* f)//将printf串口重定向

{ unsigned char HAL_UART_Transmit(&huart1, (uint8_t*)&ch, 1, 1000);//重新实现fputc发送一个字符的功能

return ch; }

3.)

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

调用该函数接收到数据后会进入中断处理函数执行相关操作代码

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)//中断处理函数原型

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

DAM是受CPU指令来处理数据的控制器,调用DAM后,相关功能由DMA控制器实现,CPU只有执行这条代码的消耗而无需进行数据处理,可以直接继续执行下面的代码

HAL_UART_Transmit_DMA(&huart1, "dwa", 10000);

HAL_UARTEx_ReceiveToIdle_DMA(&huart1, Rx_data, 100);//DMA的中断处理函数

void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)//DMA的接受函数,接收后空隙触发空闲中断,空闲中断后要再次调用本函数,才能继续接受串口数据,触发空闲终端。


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

      double a=0;

      HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_3);
      while (1)
      {
		

		HAL_ADC_Start(&hadc);//打开ADC采样
		//获取adc采样值
		ADC_Value= HAL_ADC_GetValue(&hadc);
		a=999-(ADC_Value/4095.0f*999.0f);
		TIM3->CCR3=a;
		printf("adc:%d,%lfv\r\n",ADC_Value,((double)ADC_Value/4096*3.3));
		HAL_Delay(50);
      }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值