Как реализовать счётчик в uKeil? Как сделать счётчик количества нажатий на кнопку и отправлять его на ПК при каждом изменении?

14 Мая 2022 в 19:52
253 +1
1
Ответы
1

Для реализации счётчика в uKeil, вы можете использовать микроконтроллер STM32 и программировать его на языке Си.

Пример программы для подсчёта количества нажатий на кнопку и отправки этого значения на ПК через UART:

#include "stm32f4xx.h"
#include "stdio.h"
int count = 0;
void USART2_Init(void) {
RCC->APB1ENR |= RCC_APB1ENR_USART2EN; // Включаем тактирование USART2
GPIOA->AFR[0] |= 0x0070; // AF7 (USART2) для пинов PA2 и PA3
GPIOA->MODER |= GPIO_MODER_MODER2_1 | GPIO_MODER_MODER3_1; // Пины PA2 и PA3 на альтернативной функции USART2
USART2->BRR = 42000000/115200; // Настраиваем скорость передачи
USART2->CR1 = USART_CR1_TE | USART_CR1_RE | USART_CR1_UE; // Включаем передачу и приём USART2
}
void USART2_SendChar(char ch) {
while (!(USART2->SR & USART_SR_TXE)); // Ждём пока буфер передатчика не освободится
USART2->DR = ch; // Передаём символ
}
void EXTI0_IRQHandler(void) {
if (EXTI->PR & EXTI_PR_PR0) {
EXTI->PR |= EXTI_PR_PR0; // Сбрасываем флаг прерывания
count++;
USART2_SendChar(count); // Отправляем значение счётчика
}
}
int main(void) {
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; // Включаем тактирование GPIOA
RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN; // Включаем тактирование SYSCFG
SYSCFG->EXTICR[0] = SYSCFG_EXTICR1_EXTI0_PA; // Привязываем прерывание к пину PA0
EXTI->IMR |= EXTI_IMR_MR0; // Разрешаем прерывание от линии 0
EXTI->FTSR |= EXTI_FTSR_TR0; // Прерывание по фронту
NVIC_EnableIRQ(EXTI0_IRQn); // Включаем прерывание EXTI0
USART2_Init();
while (1) {
}
}

Этот пример программы предполагает, что кнопка подключена к пину PA0 микроконтроллера и что USART2 используется для отправки данных на ПК. В функции EXTI0_IRQHandler происходит инкрементация переменной count при каждом нажатии на кнопку, после чего это значение отправляется на ПК через UART.

Для просмотра отправленных данных на ПК, вы можете использовать программу для мониторинга COM портов, например, PuTTY.

16 Апр в 18:32
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 017 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир