Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void rccInit(){
- //включение тактирования портов
- RCC->APB2ENR |= (RCC_APB2ENR_IOPAEN|
- RCC_APB2ENR_IOPBEN|
- RCC_APB2ENR_IOPCEN);
- RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;//включение тактирования шины таймера
- RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;//включение тактирования ацп
- RCC->APB2ENR |= RCC_APB2ENR_USART1EN;//включение уарта
- RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;//включаем тактирование альтернативных функций
- }
- void delay_ms(int val){
- globDelay = val;
- while(globDelay);
- }
- void gpioInit(){
- //***********для дисплея***********//
- //пины шина данных
- RCC->APB2ENR |= (RCC_APB2ENR_IOPAEN|RCC_APB2ENR_IOPBEN);
- GPIOA->CRL = ( GPIO_CRL_MODE0_0|GPIO_CRL_CNF0_0|
- GPIO_CRL_MODE1_0|GPIO_CRL_CNF1_0|
- GPIO_CRL_MODE2_0|GPIO_CRL_CNF2_0|
- GPIO_CRL_MODE3_0|GPIO_CRL_CNF3_0|
- GPIO_CRL_MODE4_0|GPIO_CRL_CNF4_0|
- GPIO_CRL_MODE5_0|GPIO_CRL_CNF5_0|
- GPIO_CRL_MODE6_0|GPIO_CRL_CNF6_0|
- GPIO_CRL_MODE7_0|GPIO_CRL_CNF7_0);
- GPIOA->ODR |= 0xff;
- //пины управление шиной данных
- GPIOB->CRL &= ~(GPIO_CRL_MODE0 | GPIO_CRL_CNF0);
- GPIOB->CRL |= (GPIO_CRL_MODE0_0|GPIO_CRL_CNF0_0);
- GPIOB->CRH &= ~(GPIO_CRH_MODE10 | GPIO_CRH_CNF10);
- GPIOB->CRH |= (GPIO_CRH_MODE10_0 | GPIO_CRH_CNF10_0);
- GPIOB->ODR |= (GPIO_ODR_ODR0 | GPIO_ODR_ODR1 | GPIO_ODR_ODR10);
- //пин подсветка дисплея
- GPIOB->CRH &= ~(GPIO_CRH_MODE11 | GPIO_CRH_CNF11);
- GPIOB->CRH |= (GPIO_CRH_MODE11_0);
- GPIOB->ODR &= ~(GPIO_ODR_ODR11);
- //для светодиода на отладочной плате
- GPIOC->CRH &= ~(GPIO_CRH_MODE13 | GPIO_CRH_CNF13);
- GPIOC->CRH |= (GPIO_CRH_MODE13_0);
- //GPIOC->ODR &= ~(GPIO_ODR_ODR11);
- //пин кнопки B12 кнопка по умолчанию настроена на вход после сброса
- GPIOB->CRH &= ~(GPIO_CRH_MODE12|GPIO_CRH_CNF12);
- GPIOB->CRH |= (GPIO_CRH_CNF12_0);
- //пин ацп B1
- GPIOB->CRL &= ~(GPIO_CRL_MODE1|GPIO_CRL_CNF1);
- //пины уарта
- GPIOA->CRH |=(GPIO_CRH_CNF9_1 | GPIO_CRH_MODE9_1); //TX
- //RX (настраивать не нужно, настройки по дефолту подходят)
- }
- void adcInit(){
- ADC1->CR2 |= ADC_CR2_ADON;
- delay_ms(1);
- ADC1->CR1 |= (ADC_CR1_DISCEN);
- ADC1->CR2 |= ADC_CR2_EXTTRIG;
- ADC1->CR2 |= (0b111 << 17);//extesel swstart
- ADC1->SQR3 = 9;
- }
- void uartInit(uint32_t baudRate_uart){
- uint32_t mantisa, div;
- mantisa = (8000000/baudRate_uart)/16;
- div = (int)((((8000000.0/(double)(baudRate_uart))/16.0 - mantisa) * 16.0) + 0.5);
- USART1->CR1 |= (USART_CR1_UE|
- USART_CR1_RXNEIE|
- USART_CR1_TE|
- USART_CR1_RE);
- USART1->BRR = mantisa << 4;
- USART1->BRR |= div;
- NVIC_EnableIRQ(USART1_IRQn);
- }
- void timerInit(){
- TIM2->PSC = 8000;//пределитель
- TIM2->ARR = 1;//до какого числа считаем
- TIM2->CNT = 0;//с какого числа начинаем отсчет
- TIM2->DIER |= TIM_DIER_UIE;//
- TIM2->CR1|=(TIM_CR1_CEN|TIM_CR1_ARPE|TIM_CR1_URS);
- NVIC_SetPriority(TIM2_IRQn, (1<<__NVIC_PRIO_BITS)-1);//установка приоритета прерывания
- NVIC_EnableIRQ(TIM2_IRQn);//включение прерывания
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement