首先要配置其硬件资源
温度采集:用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_PSC和TIMX_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.添加任务


四、生成文件配置


本文介绍了一种基于STM32的温度控制系统设计方案,详细讲述了如何配置ADC进行温度信号采集,并利用DMA实现数据传输。此外,还介绍了如何配置定时器进行精确计时,以及如何配置串口用于数据通信。最后,文章还展示了如何使用FreeRTOS进行任务管理和调度。

7061

被折叠的 条评论
为什么被折叠?



