STM Урок 32. HAL. DAC. Noise. RNG

 

 

 

Урок 32

DAC. Noise. RNG

 

 

Проект создаём из проекта DAC_NOISE. Назовем его DAC_NOISE_RNG. Запустим проект в Cube, включим RNG.

 

image00

 

В Clock Configuration произведем автоматическую перегенерацию

В Configuration в DAC выключим аппаратный шум (триггер).

 

image01

 

В настройках таймера включим прерывания. Делитель и период не трогаем.

 

 

Сгенерируем проект, откроем его, соберём и настроим программатор.

В связи со включением прерываний таймера немного изменим функцию его запуска в main()

 

  /* USER CODE BEGIN 2 */

        HAL_TIM_Base_Start_IT(&htim6);

 

Вставим в main.c обработчик прерывания по окончанию счёта таймера

 

/* USER CODE BEGIN 4 */

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim6)

{

 

}

/* USER CODE END 4 */

 

Начнем писать вызов функции в данном обработчике.

В документации HAL User manual откроем страницу 661 и возьмем там функцию HAL_RNG_GetRandomNumber 

Получится вот так

 

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim6)

{

        HAL_DAC_SetValue(&hdac,DAC_CHANNEL_1,DAC_ALIGN_12B_R,(HAL_RNG_GetRandomNumber(&hrng))&0x00000FFF);

}

 

Соберем проект, прошьём контроллер и посмотрим результат. Как мы видим, полочки у нас совершенно другие, чем с применением псевдослучайного числа, повторений практически нет.

Ну, теперь проделаем то же самое с частотами как и в прошлом занятии. Можно не заходя в Cube MX – прямо в Keil.

Поставим сначала значения делителя и периода 41 / 2, а затем 20 / 1.

Теперь можно с теми же показателями прошить проект прошлого занятия и сравнить результат.

 

Предыдущий урок Программирование МК STM32 Следующий урок

 

Исходный код

 

 

Купить отладочную плату можно здесь STM32F4-DISCOVERY

 

 

Смотреть ВИДЕОУРОК

STM32 DAC. Noise. RNG

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*