Тема: STM32 импульсный генератор 1кГц ... 64МГц
Данный контент доступен только зарегистрированным пользователям.
#include <Wire.h>
#include <LiquidCrystal_I2C.h> // liquidcrystali2c.zip
LiquidCrystal_I2C lcd(0x27,16,2); // Устанавливаем дисплей
HardwareTimer pwmtimer3(3);
long int del=1,mn=1;
float f;
void setup() {
lcd.init();
lcd.backlight();// Включаем подсветку дисплея
///////////////////////////
pinMode(PB0, PWM);
pinMode(PB1,INPUT); // +
pinMode(PB10,INPUT);// -
pinMode(PB11,INPUT);// х1 х10 x100 x1000
pwmtimer3.pause();
pwmtimer3.setPrescaleFactor(del);
pwmtimer3.setOverflow(2-1);// /2
pwmtimer3.setCompare(TIMER_CH3, 1);// меандр
pwmtimer3.refresh();
pwmtimer3.resume();
}
void loop() {
if(digitalRead(PB11)==HIGH){mn=mn*10;if(mn>1000){mn=1;}}
if(digitalRead(PB1)==HIGH){del=del+mn;if(del>65535){del=65535;}pwmtimer3.setPrescaleFactor(del);}
if(digitalRead(PB10)==HIGH){del=del-mn;if(del<1){del=1;}pwmtimer3.setPrescaleFactor(del);}
lcd.setCursor(0, 0);
lcd.print("F = ");
f = 64000000/(1*del);
if(f>1000000){lcd.print(f/1000000,3);lcd.print(" MHz ");}else{lcd.print(f/1000,3);lcd.print(" kHz ");}
lcd.setCursor(0,1);
lcd.print("x");lcd.print(mn);lcd.print(" ");lcd.setCursor(6,1);lcd.print("d");lcd.print(del);lcd.print(" ");
delay(300);
}