Спойлер
Код: Выделить всё
#include "main.h"
#define PIN_CONNECTION_DTH22 (1 << 10)
void init_read_dht22() {
RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
GPIOA->MODER |= GPIO_MODER_MODER10_1;
GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR10_1;
GPIOA->PUPDR |= GPIO_PUPDR_PUPDR10_1;
}
void init_write_dht22() {
RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
GPIOA->MODER |= GPIO_MODER_MODER10_0;
GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR10_1;
}
int main() {
uint16_t time;
RCC->AHBENR |= RCC_AHBENR_GPIOEEN;
GPIOE->MODER |= GPIO_MODER_MODER13_0 | GPIO_MODER_MODER14_0 | GPIO_MODER_MODER9_0;
while(1) {
init_write_dht22();
GPIOA->ODR &= ~PIN_CONNECTION_DTH22;
Delay_ms(18);
init_read_dht22();
GPIOA->ODR |= PIN_CONNECTION_DTH22;
Delay_ms(50);
time = 1000;
while(time--) {
if ((GPIOA->IDR & PIN_CONNECTION_DTH22) == 1) {
GPIOE->ODR |= 1 << 13;
}
else {
GPIOE->ODR |= 1 << 14;
}
}
Delay_ms(10000);
Delay_ms(10000);
}
}


