Белый Жрец (28.03.2013 13:32, просмотров: 220) ответил Белый Жрец на А ПКР это что? извините за незнание. противокорабельная ракета?
приведу пример вырождения кода: мазохизм своего рода - но как-то так...
{ // Тики на APB1
//
//
// U U
// U U S S
// C C I I I A A A A S S W
// D P A A 2 2 2 R R R R P P W
// A W N N C C C T T T T I I D 1 1 1
// C R 2 1 3 2 1 5 4 3 2 3 2 G 4 3 2 7 6 5 4 3 2 -- TIM
RCC->APB1ENR |= B1B32(0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1,0);
/// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
}
...
{ // определения для порта B
GPIOB->BSRRL = 0x1000; // PB12 в 1 - Z-состояние - чтобы не включить раньше времени насос
// 7777 6666 5555 4444 3333 2222 1111 0000 // параметры - смотрим таблицу
GPIOB->AFR[0] |= B4B32(noAF,noAF,noAF,0000,0000,noAF,noAF,noAF); // noAF
// 1111 1111 1111 1111 1111 1111 0000 0000
// 5555 4444 3333 2222 1111 0000 9999 8888
GPIOB->AFR[1] |= B4B32(Spi2,Spi2,Spi2,noAF,noAF,0000,0000,noAF);
// 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 --
GPIOB->OTYPER |= B1B16(oOD,oPP,oPP,oOD,oOD,0 ,0 ,oPP,oPP,oPP,oPP,0 ,0 ,oPP,oPP,oPP); // oPP oOD установка otyper
GPIOB->OSPEEDR |= B2B32(s25,s25,s25,s25,s25,00 ,00 ,s25,s25,s25,s25,00 ,00 ,s25,s25,s25); // s02 s25 s50 sto установка ospeed
GPIOB->PUPDR |= B2B32(dNO,dNO,dNO,dNO,dNO,00 ,00 ,dNO,dNO,dNO,dNO,00 ,00 ,dNO,dNO,dNO); // dNO dPU dPD установка PuPd
GPIOB->MODER |= B2B32(mAF,mAF,mAF,mOu,mOu,00 ,00 ,mOu,mOu,mOu,mOu,00 ,00 ,mOu,mOu,mOu); // mIn mOu mAF mAn установка moder
}
...
if (State==WrStr){ // инициализация для передачи строки
if ( (DMA1_Stream6->CR & (u32)DMA_Enable) == 0 ){
State=WtWri ; // переход на ожидание окончания передачи строки
DMA1_Stream6->CR = (uint32_t)0; // отрубаем поток
DMA1->HIFCR = DMA_Stream6_IT_MASK; // очищаем флаги
DMA1_Stream6->PAR = (u32)&USART2->DR; // адрес переферии
DMA1_Stream6->M0AR = (u32)SOut; // адрес в памяти1
DMA1_Stream6->NDTR = (u16)LOut; // количество байт
//DMA1_Stream6->M1AR = (u32)buf2; // адрес в памяти2
DMA1_Stream6->FCR |= (u32)DMA_FIFOMode_Disable; // запретить использование буфера FIFO
USART2->SR &= ~(u16)USART_FLAG_TC; // очищаем TC в USART
DMA1_Stream6->CR = DMA_Channel_4 | // канал
/**/ DMA_DIR_MemoryToPeripheral | // направление
/**/ DMA_PeripheralInc_Disable | // инкремент по переферии
/**/ DMA_MemoryInc_Enable | // инкремент по памяти
/**/ DMA_PeripheralDataSize_Byte | // размер данных по переферии
/**/ DMA_MemoryDataSize_Byte | // размер данных по памяти
/**/ DMA_Mode_Normal | // циклично или разово
/**/ DMA_Priority_High | // приоритет
/**/ DMA_MemoryBurst_Single | // тактов за передачу
/**/ DMA_PeripheralBurst_Single | // тактов за передачу
/**/ // DMA_Memory_0 | // текущая область памяти
/**/ // DMA_FlowCtrl_Peripheral; | // управляет потоком переферия
/**/ DMA_Enable; // DMA1 Stream6 запускаем
}}
уж не пинайте сильно...