【STM32CobeMX】基于F407的生成FreeRTOS

首先要配置其硬件资源

温度采集:用ADC1的6路通道轮询采集数据,将采集的数据通过DMA的方式搬运到寄存器。

温度控制:用PA8和PB13进行温度的控制。

CobeMX的相关配置

一、基本设置

1.选择外部时钟

2.配置总线时钟频率

3.选择烧录方式(不带RTOS)

4.选择烧录方式(带RTOS)

主要是因为FreeRTOS要用到SysTick。

二、外围电路配置

1.配置DMA模式下的ADC多通道采样

配置ADC基本设置

增加DMA

ADC参数设置

ADC采样通道配置

开启ADC采样中断

2.配置通用定时器用作定时器中断(硬件定时器)

配置TIM6做1s的时间计时

补充:计时器计时计算公式

系统主频是168MHz,APB2时钟总线是2分频后的84MHz。

定时器的定时时间主要由TIMX_PSCTIMX_ARR两个寄存器的值决定(定时器16位,故可设置值为65536)。

定时器频率是:f = 84MHz / 8400 / 10000 = 1Hz;

定时时间:T = 1s / f = 1s / 1 = 1s。

3.配置串口中断

在usart.c文件中的void MX_USART1_UART_Init(void)函数后面使能接收中断,添加如下函数:

void MX_USART1_UART_Init(void)
{

  huart1.Instance = USART1;
  huart1.Init.BaudRate = 115200;
  huart1.Init.WordLength = UART_WORDLENGTH_8B;
  huart1.Init.StopBits = UART_STOPBITS_1;
  huart1.Init.Parity = UART_PARITY_NONE;
  huart1.Init.Mode = UART_MODE_TX_RX;
  huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  huart1.Init.OverSampling = UART_OVERSAMPLING_16;
  if (HAL_UART_Init(&huart1) != HAL_OK)
  {
    Error_Handler();
  }
    /* 配置串口中断并使能,需要放在HAL_UART_Init函数后执行修改才有效 */  
  HAL_UART_Receive_IT(&huart1,(uint8_t *)&RxBuf,FRAME_LENTH); // 使能接收中断
}

    /* 配置串口中断并使能,需要放在HAL_UART_Init函数后执行修改才有效 */  
  HAL_UART_Receive_IT(&huart1,(uint8_t *)&RxBuf,FRAME_LENTH); // 使能接收中断

三、FreeRTOS配置

1.配置定时器(使用FERRRTOS软件定时器,适用于精度不高的任务)

添加定时器任务及参数

在随后在生成的工程中找到freertos.c文件

添加如下程序:

void MX_FREERTOS_Init(void) {

  /* Create the timer(s) */
  /* definition and creation of myTimer */
  osTimerDef(myTimer, OsTimerCallback);
  myTimerHandle = osTimerCreate(osTimer(myTimer), osTimerPeriodic, NULL);

  /* USER CODE BEGIN RTOS_TIMERS */
  /* start timers, add new ones, ... */
  osStatus timerResult = osOK ;
  timerResult = osTimerStart(myTimerHandle,1000);
  /* USER CODE END RTOS_TIMERS */

 ....................}

  osStatus timerResult = osOK ;
  timerResult = osTimerStart(myTimerHandle,1000);//定时1秒钟
 

 在osInterface.c中加入任务函数,这样每秒钟就会执行一次该任务中的事件函数。

void OsTimerCallback(void const * argument)
{
  /* USER CODE BEGIN OsTimerCallback */
          Output_Tempture();
          Stop_Bit_Control();
          Start_Bit_Control();
  /* USER CODE END OsTimerCallback */
}

2.添加任务

四、生成文件配置

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

米杰的声音

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值