Урок 32
DAC. Noise. RNG
Проект создаём из проекта DAC_NOISE. Назовем его DAC_NOISE_RNG. Запустим проект в Cube, включим RNG.
В Clock Configuration произведем автоматическую перегенерацию
В Configuration в DAC выключим аппаратный шум (триггер).
В настройках таймера включим прерывания. Делитель и период не трогаем.
Сгенерируем проект, откроем его, соберём и настроим программатор.
В связи со включением прерываний таймера немного изменим функцию его запуска в 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
Смотреть ВИДЕОУРОК
Добавить комментарий