مبدل دیجیتال به آنالوگ ARM
مبدل دیجیتال به آنالوگ
خلاصه
در این آموزش با واحد DAC میکروکنترلر آشنا می شویم و در قالب یک پروژه میزان روشنایی LED برد آموزشی را با خروجی این واحد کنترل می کنیم.
مشاهده ویدیو
ایجاد پروژه در نرم افزار کیوب

در نرم افزار Keil می توان از قسمت Application/User به برنامه اصلی دسترسی داشت

تشریح کد برنامه
هدرفایل های مورد نیاز پروژه
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "stm32f1xx_hal.h"
پیش تعریف توابع ایجاد شده توسط نرم افزار کیوب
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_DAC_Init(void);
متغیرهای مورد استفاده در برنامه
/* Private variables ---------------------------------------------------------*/
DAC_HandleTypeDef hdac;
/* USER CODE BEGIN PV */
/* Private variables ---------------------------------------------------------*/
uint8_t dacvalue=0;
/* USER CODE END PV */
جزئیات تابع MX_GPIO_Init
/** Configure pins as
* Analog
* Input
* Output
* EVENT_OUT
* EXTI
*/
static void MX_GPIO_Init(void)
{
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOA_CLK_ENABLE();
}
جزئیات تابع MX_DAC_Init
/* DAC init function */
static void MX_DAC_Init(void)
{
DAC_ChannelConfTypeDef sConfig;
/**DAC Initialization
*/
hdac.Instance = DAC;
if (HAL_DAC_Init(&hdac) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
/**DAC channel OUT1 config
*/
sConfig.DAC_Trigger = DAC_TRIGGER_NONE;
sConfig.DAC_OutputBuffer = DAC_OUTPUTBUFFER_ENABLE;
if (HAL_DAC_ConfigChannel(&hdac, &sConfig, DAC_CHANNEL_1) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
/**DAC channel OUT2 config
*/
if (HAL_DAC_ConfigChannel(&hdac, &sConfig, DAC_CHANNEL_2) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
}
تابع main
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration----------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_DAC_Init();
/* USER CODE BEGIN 2 */
HAL_DAC_Start(&hdac, DAC_CHANNEL_1);
/* USER CODE END 2 */
روتین اجرای برنامه
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_DAC_SetValue(&hdac,DAC_CHANNEL_1,DAC_ALIGN_8B_R,dacvalue);
dacvalue+=20;
if (dacvalue>255) dacvalue=0;
HAL_Delay(200);
}
/* USER CODE END 3 */
پروژه DAC
کانال تلگرام نامینیک
گروه تلگرام نامینیک ARM STM32
نظرات
[…] مبدل دیجیتال به آنالوگ […]
نظر بدهید