У меня STM32F4.Pavel_1978 писал(а):на F103 это пункт 6.2
Как "так"? reset and clock control ?Pavel_1978 писал(а):Раздел так и называется
Сейчас читаю неплохую статью DiHalt'а http://easyelectronics.ru/arm-uchebnyj- ... stm32.html
У меня STM32F4.Pavel_1978 писал(а):на F103 это пункт 6.2
Как "так"? reset and clock control ?Pavel_1978 писал(а):Раздел так и называется
Код: Выделить всё
Tools -> Configure Tools...
Menu Text: ST-Link programmer
Command: C:\Program Files\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility\ST-LINK_CLI.exe
Argument: -c SWD -ME -P $PROJ_FNAME$.hex -Rst -Run
Initial Derectory: $EXE_DIR$
Tool Available: Always
Tools -> Options -> Key Bindings -> Tools -> ST-Link programmer F8
По моему у меня было то же самое с KEIL. st-link utility может менять прошивку у discovery. В результате драйвер перестает подходить. Лечилось заменой dll драйвера st-link. Где то в сети лежит описание какую dll нужно сменить что бы заработало с st-link с новой прошивкой.amv2000 писал(а):2.Ещё после установки ST-LINK utility, компилятор IAR перестал прошивать и отлаживать.
чего служат биты CC4NP и CC4P
CC2NP: Полярность комплементарного выхода захвата/сравнения 2
0: OC1N активный высокий
1: OC1N активный низкий
Прим: Этот бит не записывается когда был запрограммирован уровень LOCK-2 или 3 (TIMx_BDTR) и CC1S=00(канал сконфигурирован на выход).
Применительно к выходу делал трехфазный частотник. Есть разные драйверы полевиков, с прямыми и инверсными входами(и их комбинациями) для ШИМ управления. Так вот весьма удобно в зависимости от типа микросхемы записать в регистр нужную полярность импульсов и избавиться от лишних микросхем.СС1Р: Полярность выхода захвата/сравнения 1
Канал СС1 сконфигурирован на выход:
0: ОС1 активный высокий
1: ОС1 активный низкий
Канал СС1 сконфигурирован на вход:
Этот бит выбирает IC1 для операций захвата или запуска.
0: неинвертирован: захват происходит по нарастающему фронту IC1. При использовании как внешний запуск, IC1 не инвертируется.
1: инвертирован: захват происходит по спадающему фронту IC1. При использовании для внешнего запуска IC1 инвертируется.
А что это значит?uk8amk писал(а):комплементарного выхода
Код: Выделить всё
int main()
{
RCC->AHBENR = 0x00060014;
RCC->APB1ENR = 0x00000002;
GPIOA->MODER = 0x28000000;
GPIOB->MODER = 0x00000008;
GPIOB->OTYPER = 0x00000000;
GPIOB->OSPEEDR = 0x00000000;
GPIOA->PUPDR = 0x00000000;
TIM3->CCMR2 = 0x60;
TIM3->CCER = 0x1000;
TIM3->CR1 = 0x0001;
TIM3->CCR4 = 0x2EDF;
TIM3->PSC = 0x5DBF;Это значит, что вам надо прочитать в интернете что такое транзисторный мост и полумост.А что это значит?
Код: Выделить всё
/*--------------------------------------------------------
//TIM1 in 3ph mode with complementary outputs
---------------------------------------------------------*/
#define DMA_BURST_LEN (3-1)
#define DMA_BASE_ADR 13 // adress offset for TIM_CCR1
#define DEAD_TIME_VAL 160 //*dead-time step with 62.5nS step for 16MHz
void init_tim1( void )
{
//tDTS=tCK_INT, ARPE, Edge-aligned
TIM1->CR1 = TIM_CR1_ARPE | TIM_CR1_URS;
//Output idle state OISx=0, OISxN=0(MOE=0), CCPC?
TIM1->CR2 = 0;
//Slave mode controller disabled
TIM1->SMCR = 0;
//Update DMA enable, Break IRQ, Update IRQ
TIM1->DIER = TIM_DIER_UDE | TIM_DIER_BIE | TIM_DIER_UIE;
//Set Capture-compare mode
TIM1->CCMR1 = TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2; // OC1M=PWM1
TIM1->CCMR1 |= TIM_CCMR1_OC1PE; // OC1 Preload enable
TIM1->CCMR1 |= TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2; // OC2M=PWM1
TIM1->CCMR1 |= TIM_CCMR1_OC2PE; // OC2 Preload enable
TIM1->CCMR2 = TIM_CCMR2_OC3M_1 | TIM_CCMR2_OC3M_2; // OC3M=PWM1
TIM1->CCMR2 |= TIM_CCMR2_OC3PE; // OC3 Preload enable
//Enable compare outputs, polarity
TIM1->CCER = TIM_CCER_CC1E | TIM_CCER_CC1NE;
TIM1->CCER |= TIM_CCER_CC2E | TIM_CCER_CC2NE;
TIM1->CCER |= TIM_CCER_CC3E | TIM_CCER_CC3NE;
//time base
TIM1->CNT = 0;
TIM1->PSC = 34; // Fpwm = 1800Hz
TIM1->ARR = 255; // Counter TOP
TIM1->RCR = 0;
TIM1->CCR1 = 0;
TIM1->CCR2 = 0;
TIM1->CCR3 = 0;
//Break and dead-time
TIM1->BDTR = DEAD_TIME_VAL; // dead-time
TIM1->BDTR |= TIM_BDTR_BKE | TIM_BDTR_BKP;// break input, active polarity = high
TIM1->DCR = (DMA_BURST_LEN<<8) | DMA_BASE_ADR;
//Generate event for update registers
TIM1->EGR = TIM_EGR_UG;
//Enable TIM1 IRQ vectors
NVIC->ISER[0] = TIM1_BRK_TIM15_IRQ | TIM1_UP_TIM16_IRQ;
}Спасибо! попробовал понравилось, честно говоря нигде не встречал про возможность такой связки.Леонид Иванович писал(а):Все время прошиваю из IAR посредством ST-LINK utility.
Это я встречал, но там говорилось если не работает утилита. Впрочем файл dll менял ничего не менялось экран всё равно моргает, хотя я подозреваю суть проблемы в том, что я залил по ошибке прошивку для STM32 F103 вместо STM32 F100 и думается мне где то в тактировании проблема.Galizin писал(а):Лечилось заменой dll драйвера st-link. Где то в сети лежит описание какую dll нужно сменить что бы заработало с st-link с новой прошивкой.
Шить из самого IAR средствами самого IAR, снова религия не позволяет ?Леонид Иванович писал(а):Странно. Все время прошиваю из IAR посредством ST-LINK utility. Настройки такие:
Код: Выделить всё
RCC->AHBENR |= (RCC_AHBENR_IOPAEN | RCC_AHBENR_IOPBEN); Спасибо большое помоглоoleg110592 писал(а):наверное надо RCC->AHBENR |= (RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN);
Код: Выделить всё
RCC->AHBENR |= (RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOAEN);
GPIOA->MODER = 0x28000000;
GPIOB->MODER |= GPIO_MODER_MODER1_1;
GPIOB->OTYPER = 0x00000000;
GPIOB->OSPEEDR |= (GPIO_OSPEEDR_OSPEEDR1_1 | GPIO_OSPEEDR_OSPEEDR1_0);
GPIOA->PUPDR = 0x00000000;
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;
TIM3->CR1 |= TIM_CR1_ARPE;
TIM3->CCMR2 |= TIM_CCMR2_OC4PE;
TIM3->CCMR2 |= (TIM_CCMR2_OC4M_2 | TIM_CCMR2_OC4M_1);
TIM3->CCER |= TIM_CCER_CC4E;
TIM3->ARR = 23999;
TIM3->CCR4 = 19200;
TIM3->CR1 |= TIM_CR1_CEN;У меня ничего не получилось. В меню есть пункты "Download active application" и "Download file...", они прошивают контроллер, но дальше ничего не происходит. Даже если потом даю вручную контроллеру сброс - прошивка не стартует. Но если затем нажать "Debug without Downloading", то отладка нормально запускается.dosikus писал(а):Шить из самого IAR средствами самого IAR, снова религия не позволяет ?
а где "| RCC_APB2ENR_AFIOEN"брал за образец