Спасибо. Именно в этом и меняю на 8. Выставляю в system_stm32f4xx.c такие данные:
#define PLL_M 8
#define PLL_N 169
/* SYSCLK = PLL_VCO / PLL_P */
#define PLL_P 4
вручную ставлю в main.c:
RCC_HCLKConfig(RCC_HCLK_Div2);
RCC_PCLK2Config(RCC_HCLK_Div16);
делю прескалером на 999
меряю, правда осцилом ОМЛ-2м учитывая его, параметры, всё равно, что то не так.
Вернее подобрать то можно, но по всем делителям там прескалер не 999 должен быть. Сейчас начну кодить частотомер на этом же камне, чтобы мерять таки , что я там генерю. Мне надо 264 герца.Это частота импульсов ,которые выдаёт головка в сварочном агрегате. Частотомер у меня на работе есть на к176 и генератор на 555, но это куча проводов. Хочу всё компактно сделать на STMf0.Пока пробую
на F4. Головку сварщики редко дают. Без неё сложно налаживать сварку. Вот имитируем головку с помощью генератора. Лишней головки нет .
Спойлер
#include <stm32f4xx.h>
#include <stm32f4xx_rcc.h>
#include <stm32f4xx_gpio.h>
#include <stm32f4xx_tim.h>
int main(){
RCC_HCLKConfig(RCC_HCLK_Div2);
RCC_PCLK2Config(RCC_HCLK_Div16);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);
GPIO_InitTypeDef gpio;// структура
GPIO_StructInit(&gpio); // заполняем стандартными значениями
gpio.GPIO_OType = GPIO_PuPd_NOPULL ; // подтяжка резисторами
gpio.GPIO_Mode = GPIO_Mode_AF ; // работаем как выход
gpio.GPIO_Pin = GPIO_Pin_9;
GPIO_Init(GPIOE, &gpio);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
TIM_TimeBaseInitTypeDef base_timer;
TIM_TimeBaseStructInit (&base_timer);
base_timer.TIM_Prescaler = 999; //
base_timer.TIM_Period = 5; //
TIM_TimeBaseInit(TIM1, &base_timer);
GPIO_PinAFConfig(GPIOE,GPIO_PinSource9,GPIO_AF_TIM1);
TIM_OCInitTypeDef timer_oc;
TIM_OCStructInit(&timer_oc);
timer_oc.TIM_Pulse =1;
timer_oc.TIM_OCMode = TIM_OCMode_Toggle;
/* Включаем основной и комплементарный выводы */
timer_oc.TIM_OutputState = TIM_OutputState_Enable;
timer_oc.TIM_OutputNState = TIM_OutputNState_Enable;
/* Активируем каналы */
TIM_OC1Init(TIM1, &timer_oc);
TIM_BDTRInitTypeDef timer_bdtr;
TIM_BDTRStructInit(&timer_bdtr);
timer_bdtr.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;
TIM_BDTRConfig(TIM1, &timer_bdtr);
// RCC_PCLK2Config(RCC_HCLK_Div2);/*поигрался здесь с разным Div, всё на максимуме*/
TIM_Cmd(TIM1, ENABLE);
{
while(1);
}
}
Последний раз редактировалось
shalfey Ср янв 02, 2019 19:15:46, всего редактировалось 2 раз(а).