Advertisement
2andnot

init_st

Apr 22nd, 2019
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.31 KB | None | 0 0
  1. void rccInit(){
  2.     //включение тактирования портов
  3.     RCC->APB2ENR |= (RCC_APB2ENR_IOPAEN|
  4.                     RCC_APB2ENR_IOPBEN|
  5.                     RCC_APB2ENR_IOPCEN);
  6.     RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;//включение тактирования шины таймера
  7.     RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;//включение тактирования ацп
  8.     RCC->APB2ENR |= RCC_APB2ENR_USART1EN;//включение уарта
  9.     RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;//включаем тактирование альтернативных функций
  10. }
  11. void delay_ms(int val){
  12.     globDelay = val;
  13.     while(globDelay);
  14. }
  15. void gpioInit(){
  16.     //***********для дисплея***********//
  17.     //пины шина данных
  18.     RCC->APB2ENR |= (RCC_APB2ENR_IOPAEN|RCC_APB2ENR_IOPBEN);
  19.     GPIOA->CRL = (  GPIO_CRL_MODE0_0|GPIO_CRL_CNF0_0|
  20.                     GPIO_CRL_MODE1_0|GPIO_CRL_CNF1_0|
  21.                     GPIO_CRL_MODE2_0|GPIO_CRL_CNF2_0|
  22.                     GPIO_CRL_MODE3_0|GPIO_CRL_CNF3_0|
  23.                     GPIO_CRL_MODE4_0|GPIO_CRL_CNF4_0|
  24.                     GPIO_CRL_MODE5_0|GPIO_CRL_CNF5_0|
  25.                     GPIO_CRL_MODE6_0|GPIO_CRL_CNF6_0|
  26.                     GPIO_CRL_MODE7_0|GPIO_CRL_CNF7_0);
  27.     GPIOA->ODR |= 0xff;
  28.     //пины управление шиной данных
  29.     GPIOB->CRL &=   ~(GPIO_CRL_MODE0 | GPIO_CRL_CNF0);
  30.     GPIOB->CRL |=   (GPIO_CRL_MODE0_0|GPIO_CRL_CNF0_0);
  31.     GPIOB->CRH &=   ~(GPIO_CRH_MODE10 | GPIO_CRH_CNF10);
  32.     GPIOB->CRH |=   (GPIO_CRH_MODE10_0 | GPIO_CRH_CNF10_0);
  33.     GPIOB->ODR |=   (GPIO_ODR_ODR0 | GPIO_ODR_ODR1 | GPIO_ODR_ODR10);
  34.     //пин подсветка дисплея
  35.     GPIOB->CRH &=   ~(GPIO_CRH_MODE11 | GPIO_CRH_CNF11);
  36.     GPIOB->CRH |=   (GPIO_CRH_MODE11_0);
  37.     GPIOB->ODR &=   ~(GPIO_ODR_ODR11);
  38.     //для светодиода на отладочной плате
  39.     GPIOC->CRH &=   ~(GPIO_CRH_MODE13 | GPIO_CRH_CNF13);
  40.     GPIOC->CRH |=   (GPIO_CRH_MODE13_0);
  41.     //GPIOC->ODR &= ~(GPIO_ODR_ODR11);
  42.  
  43.     //пин кнопки B12 кнопка по умолчанию настроена на вход после сброса
  44.     GPIOB->CRH &= ~(GPIO_CRH_MODE12|GPIO_CRH_CNF12);
  45.     GPIOB->CRH |= (GPIO_CRH_CNF12_0);
  46.     //пин ацп B1
  47.     GPIOB->CRL &= ~(GPIO_CRL_MODE1|GPIO_CRL_CNF1);
  48.     //пины уарта
  49.     GPIOA->CRH |=(GPIO_CRH_CNF9_1 | GPIO_CRH_MODE9_1);  //TX
  50.                                                         //RX (настраивать не нужно, настройки по дефолту подходят)
  51. }
  52. void adcInit(){
  53.     ADC1->CR2 |= ADC_CR2_ADON;
  54.     delay_ms(1);
  55.     ADC1->CR1 |= (ADC_CR1_DISCEN);
  56.     ADC1->CR2 |= ADC_CR2_EXTTRIG;
  57.     ADC1->CR2 |= (0b111 << 17);//extesel swstart
  58.     ADC1->SQR3 = 9;
  59.  
  60. }
  61. void uartInit(uint32_t baudRate_uart){
  62.     uint32_t mantisa, div;
  63.     mantisa = (8000000/baudRate_uart)/16;
  64.     div = (int)((((8000000.0/(double)(baudRate_uart))/16.0 - mantisa) * 16.0) + 0.5);
  65.  
  66.     USART1->CR1 |=  (USART_CR1_UE|
  67.                     USART_CR1_RXNEIE|
  68.                     USART_CR1_TE|
  69.                     USART_CR1_RE);
  70.  
  71.     USART1->BRR = mantisa << 4;
  72.     USART1->BRR |= div;
  73.     NVIC_EnableIRQ(USART1_IRQn);
  74.  
  75. }
  76. void timerInit(){
  77.     TIM2->PSC = 8000;//пределитель
  78.     TIM2->ARR = 1;//до какого числа считаем
  79.     TIM2->CNT = 0;//с какого числа начинаем отсчет
  80.     TIM2->DIER |= TIM_DIER_UIE;//
  81.     TIM2->CR1|=(TIM_CR1_CEN|TIM_CR1_ARPE|TIM_CR1_URS);
  82.     NVIC_SetPriority(TIM2_IRQn, (1<<__NVIC_PRIO_BITS)-1);//установка приоритета прерывания
  83.     NVIC_EnableIRQ(TIM2_IRQn);//включение прерывания
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement