Вогнiшча (vogneschcha) wrote in ru_radio_electr,
Вогнiшча
vogneschcha
ru_radio_electr

STM32, подсчет частоты импульсов.

Покритикуйте решение задачи: подсчет частоты импульсов:

Вход импульсов запускает прерывание, в котором инкрементируется переменная count
Таймер 14 настраивается на прерывания в 1сек, и в этом прерывании переменная count копируется в результирующую переменную countout , после чего переменная count обнуляется:
[Текст программы:]
main.c
/* USER CODE BEGIN PV */
/* Private variables —-------------------------------------------------------*/
/* инициализация переменных */

uint8_t count = 0;
uint8_t countout = 0;


/* USER CODE BEGIN 2 */
/* Запуск таймера 14 в режиме прерываний */

HAL_TIM_Base_Start_IT(&htim14);


while (1)
{
/* передача countout в UART2 порт */
/* пауза в 1сек */

HAL_UART_Transmit (&huart2, &countout, 1, 1000);
HAL_Delay(1000);


stm32f4xx_it.c
/* USER CODE BEGIN 0 */
/* Создание внешних переменных */

extern uint8_t count;
extern uint8_t countout;


/* USER CODE BEGIN EXTI15_10_IRQn 0 */
/* инкремент счетчика пульсаций по прерыванию, при нажатии кнопки pin С13 */

count+=1;


/* USER CODE BEGIN TIM8_TRG_COM_TIM14_IRQn 0 */
/* Прерывание по таймеру 14 */
/* Запоминаем количество импульсов, и сбрасываем временный счетчик */

countout=count;
count=0;

Subscribe
  • Post a new comment

    Error

    Comments allowed for members only

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 21 comments