This commit is contained in:
2023-10-17 18:56:20 +02:00
parent dcea417111
commit 2431405cfd
6 changed files with 160 additions and 15 deletions

View File

@@ -34,11 +34,16 @@ extern "C" {
extern TIM_HandleTypeDef htim3;
extern TIM_HandleTypeDef htim4;
/* USER CODE BEGIN Private defines */
/* USER CODE END Private defines */
void MX_TIM3_Init(void);
void MX_TIM4_Init(void);
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
/* USER CODE BEGIN Prototypes */

View File

@@ -93,6 +93,7 @@ int main(void)
MX_SPI3_Init();
MX_USART2_UART_Init();
MX_TIM3_Init();
MX_TIM4_Init();
/* USER CODE BEGIN 2 */
setup();
/* USER CODE END 2 */
@@ -149,7 +150,7 @@ void SystemClock_Config(void)
}
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART2|RCC_PERIPHCLK_TIM34;
PeriphClkInit.Usart2ClockSelection = RCC_USART2CLKSOURCE_PCLK1;
PeriphClkInit.Tim34ClockSelection = RCC_TIM34CLK_HCLK;
PeriphClkInit.Tim34ClockSelection = RCC_TIM34CLK_PLLCLK;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
{
Error_Handler();

View File

@@ -25,6 +25,7 @@
/* USER CODE END 0 */
TIM_HandleTypeDef htim3;
TIM_HandleTypeDef htim4;
/* TIM3 init function */
void MX_TIM3_Init(void)
@@ -69,6 +70,50 @@ void MX_TIM3_Init(void)
/* USER CODE END TIM3_Init 2 */
}
/* TIM4 init function */
void MX_TIM4_Init(void)
{
/* USER CODE BEGIN TIM4_Init 0 */
/* USER CODE END TIM4_Init 0 */
TIM_MasterConfigTypeDef sMasterConfig = {0};
TIM_OC_InitTypeDef sConfigOC = {0};
/* USER CODE BEGIN TIM4_Init 1 */
/* USER CODE END TIM4_Init 1 */
htim4.Instance = TIM4;
htim4.Init.Prescaler = 0;
htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
htim4.Init.Period = 1023;
htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
if (HAL_TIM_PWM_Init(&htim4) != HAL_OK)
{
Error_Handler();
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK)
{
Error_Handler();
}
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 511;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_ENABLE;
if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN TIM4_Init 2 */
/* USER CODE END TIM4_Init 2 */
HAL_TIM_MspPostInit(&htim4);
}
void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef* tim_encoderHandle)
@@ -101,6 +146,51 @@ void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef* tim_encoderHandle)
}
}
void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef* tim_pwmHandle)
{
if(tim_pwmHandle->Instance==TIM4)
{
/* USER CODE BEGIN TIM4_MspInit 0 */
/* USER CODE END TIM4_MspInit 0 */
/* TIM4 clock enable */
__HAL_RCC_TIM4_CLK_ENABLE();
/* USER CODE BEGIN TIM4_MspInit 1 */
/* USER CODE END TIM4_MspInit 1 */
}
}
void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
if(timHandle->Instance==TIM4)
{
/* USER CODE BEGIN TIM4_MspPostInit 0 */
/* USER CODE END TIM4_MspPostInit 0 */
__HAL_RCC_GPIOB_CLK_ENABLE();
/**TIM4 GPIO Configuration
PB6 ------> TIM4_CH1
*/
GPIO_InitStruct.Pin = GPIO_PIN_6;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF2_TIM4;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
HAL_I2CEx_EnableFastModePlus(SYSCFG_CFGR1_I2C_PB6_FMP);
/* USER CODE BEGIN TIM4_MspPostInit 1 */
/* USER CODE END TIM4_MspPostInit 1 */
}
}
void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef* tim_encoderHandle)
{
@@ -124,6 +214,22 @@ void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef* tim_encoderHandle)
}
}
void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef* tim_pwmHandle)
{
if(tim_pwmHandle->Instance==TIM4)
{
/* USER CODE BEGIN TIM4_MspDeInit 0 */
/* USER CODE END TIM4_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_TIM4_CLK_DISABLE();
/* USER CODE BEGIN TIM4_MspDeInit 1 */
/* USER CODE END TIM4_MspDeInit 1 */
}
}
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */

View File

@@ -1,5 +1,5 @@
##########################################################################################################################
# File automatically-generated by tool: [projectgenerator] version: [3.17.1] date: [Sat Sep 30 08:45:04 CEST 2023]
# File automatically-generated by tool: [projectgenerator] version: [3.17.1] date: [Sat Oct 14 13:34:44 CEST 2023]
##########################################################################################################################
# ------------------------------------------------

View File

@@ -13,6 +13,7 @@
#define MAX_VOLT 330
#define MAX_REF 256
#define MAX_PWM_VOLT 150
typedef enum
{
@@ -23,7 +24,8 @@ typedef enum
POT,
REF,
OFFS,
ZERO,
// ZERO,
PWM,
OPT_MAX
} option_t;
@@ -62,6 +64,7 @@ void setup(void)
var[POT] = 255;
var[REF] = 197;
var[ONOFF] = 1;
var[REF] = 511;
hst7565.hspi = &hspi3;
hst7565.cs_port = ST7565_CS_GPIO_Port;
@@ -131,6 +134,8 @@ void draw_string(void)
DISP_writeString(&disp, &font5x7Info, (uint8_t *)"OFFS:", 8, 48, BM_NORMAL);
// dac2 - zeroing
DISP_writeString(&disp, &font5x7Info, (uint8_t *)"ZERO:", 8, 56, BM_NORMAL);
// pwm
DISP_writeString(&disp, &font5x7Info, (uint8_t *)"PWM:", 72, 0, BM_NORMAL);
for (option_t opt = FREQ; opt < OPT_MAX; opt++)
{
@@ -186,8 +191,15 @@ void update_display(void)
DISP_writeString(&disp, &font5x7Info, data, 48, 48, BM_NORMAL);
DISP_writeString(&disp, &font5x7Info, (uint8_t *)"*", 0, 48, BM_NORMAL);
break;
case ZERO:
temp = (MAX_REF * var[REF] + 127) / UINT8_MAX;
// case ZERO:
// temp = (MAX_REF * var[REF] + 127) / UINT8_MAX;
// snprintf((char *)data, 16, "%03u (%01d.%02d)", var[REF], temp / 100, temp % 100);
// // snprintf((char *)data, 8, "%03u", var[ZERO]);
// DISP_writeString(&disp, &font5x7Info, data, 48, 56, BM_NORMAL);
// DISP_writeString(&disp, &font5x7Info, (uint8_t *)"*", 0, 56, BM_NORMAL);
// break;
case PWM:
temp = (MAX_PWM_VOLT * var[REF] + 512) / 1024;
snprintf((char *)data, 16, "%03u (%01d.%02d)", var[REF], temp / 100, temp % 100);
// snprintf((char *)data, 8, "%03u", var[ZERO]);
DISP_writeString(&disp, &font5x7Info, data, 48, 56, BM_NORMAL);
@@ -324,10 +336,16 @@ void changeValue(int8_t inc)
ad5303_set_value(&hdac, var[OFFS], AD_DAC2);
break;
}
case ZERO:
// case ZERO:
// {
// var[ZERO] = (var[ZERO] + inc) & UINT8_MAX;
// ad5303_set_value(&hdac, var[ZERO], AD_DAC1);
// break;
// }
case PWM:
{
var[ZERO] = (var[ZERO] + inc) & UINT8_MAX;
ad5303_set_value(&hdac, var[ZERO], AD_DAC1);
var[PWM] = (var[PWM] + inc) & 0x03FF; // 0x03FF - 1023
__HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_1, var[PWM]);
break;
}
default:

View File

@@ -10,8 +10,9 @@ Mcu.IP3=SPI2
Mcu.IP4=SPI3
Mcu.IP5=SYS
Mcu.IP6=TIM3
Mcu.IP7=USART2
Mcu.IPNb=8
Mcu.IP7=TIM4
Mcu.IP8=USART2
Mcu.IPNb=9
Mcu.Name=STM32F303R(D-E)Tx
Mcu.Package=LQFP64
Mcu.Pin0=PC13
@@ -36,16 +37,17 @@ Mcu.Pin25=PC10
Mcu.Pin26=PC11
Mcu.Pin27=PC12
Mcu.Pin28=PB3
Mcu.Pin29=PB9
Mcu.Pin29=PB6
Mcu.Pin3=PF0-OSC_IN
Mcu.Pin30=VP_SYS_VS_Systick
Mcu.Pin30=PB9
Mcu.Pin31=VP_SYS_VS_Systick
Mcu.Pin4=PF1-OSC_OUT
Mcu.Pin5=PA0
Mcu.Pin6=PA1
Mcu.Pin7=PA2
Mcu.Pin8=PA3
Mcu.Pin9=PA4
Mcu.PinsNb=31
Mcu.PinsNb=32
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32F303RETx
@@ -136,6 +138,11 @@ PB3.GPIOParameters=GPIO_Label
PB3.GPIO_Label=SWO
PB3.Locked=true
PB3.Signal=SYS_JTDO-TRACESWO
PB6.GPIOParameters=GPIO_Speed,GPIO_FM6
PB6.GPIO_FM6=SYSCFG_CFGR1_I2C_PB6_FMP
PB6.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
PB6.Locked=true
PB6.Signal=S_TIM4_CH1
PB9.GPIOParameters=GPIO_Label
PB9.GPIO_Label=GAIN1
PB9.Locked=true
@@ -223,7 +230,7 @@ RCC.I2C1Freq_Value=8000000
RCC.I2C2Freq_Value=8000000
RCC.I2C3Freq_Value=8000000
RCC.I2SClocksFreq_Value=48000000
RCC.IPParameters=ADC12outputFreq_Value,ADC34outputFreq_Value,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2C1Freq_Value,I2C2Freq_Value,I2C3Freq_Value,I2SClocksFreq_Value,LSI_VALUE,MCOFreq_Value,PLLCLKFreq_Value,PLLM,PLLMCOFreq_Value,PLLMUL,PLLN,PLLP,PLLQ,PLLSourceVirtual,RCC_MCODiv,RCC_PLLsource_Clock_Source_FROM_HSE,RTCFreq_Value,RTCHSEDivFreq_Value,SYSCLKFreq_VALUE,SYSCLKSourceVirtual,TIM15Freq_Value,TIM16Freq_Value,TIM17Freq_Value,TIM1Freq_Value,TIM20Freq_Value,TIM2Freq_Value,TIM3Freq_Value,TIM8Freq_Value,UART4Freq_Value,UART5Freq_Value,USART1Freq_Value,USART2Freq_Value,USART3Freq_Value,USBFreq_Value,VCOOutput2Freq_Value
RCC.IPParameters=ADC12outputFreq_Value,ADC34outputFreq_Value,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2C1Freq_Value,I2C2Freq_Value,I2C3Freq_Value,I2SClocksFreq_Value,LSI_VALUE,MCOFreq_Value,PLLCLKFreq_Value,PLLM,PLLMCOFreq_Value,PLLMUL,PLLN,PLLP,PLLQ,PLLSourceVirtual,RCC_MCODiv,RCC_PLLsource_Clock_Source_FROM_HSE,RTCFreq_Value,RTCHSEDivFreq_Value,SYSCLKFreq_VALUE,SYSCLKSourceVirtual,TIM15Freq_Value,TIM16Freq_Value,TIM17Freq_Value,TIM1Freq_Value,TIM20Freq_Value,TIM2Freq_Value,TIM34Selection,TIM3Freq_Value,TIM8Freq_Value,UART4Freq_Value,UART5Freq_Value,USART1Freq_Value,USART2Freq_Value,USART3Freq_Value,USBFreq_Value,VCOOutput2Freq_Value
RCC.LSI_VALUE=40000
RCC.MCOFreq_Value=24000000
RCC.PLLCLKFreq_Value=48000000
@@ -246,7 +253,8 @@ RCC.TIM17Freq_Value=48000000
RCC.TIM1Freq_Value=48000000
RCC.TIM20Freq_Value=72000000
RCC.TIM2Freq_Value=48000000
RCC.TIM3Freq_Value=48000000
RCC.TIM34Selection=RCC_TIM34CLK_PLLCLK
RCC.TIM3Freq_Value=96000000
RCC.TIM8Freq_Value=48000000
RCC.UART4Freq_Value=24000000
RCC.UART5Freq_Value=24000000
@@ -263,6 +271,8 @@ SH.S_TIM3_CH1.0=TIM3_CH1,Encoder_Interface
SH.S_TIM3_CH1.ConfNb=1
SH.S_TIM3_CH2.0=TIM3_CH2,Encoder_Interface
SH.S_TIM3_CH2.ConfNb=1
SH.S_TIM4_CH1.0=TIM4_CH1,PWM Generation1 CH1
SH.S_TIM4_CH1.ConfNb=1
SPI2.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_32
SPI2.CLKPolarity=SPI_POLARITY_HIGH
SPI2.CalculateBaudRate=750.0 KBits/s
@@ -283,6 +293,11 @@ TIM3.IC1Filter=15
TIM3.IC2Filter=15
TIM3.IPParameters=Period,IC1Filter,IC2Filter
TIM3.Period=255
TIM4.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1
TIM4.IPParameters=Channel-PWM Generation1 CH1,Period,Pulse-PWM Generation1 CH1,OCFastMode_PWM-PWM Generation1 CH1
TIM4.OCFastMode_PWM-PWM\ Generation1\ CH1=TIM_OCFAST_ENABLE
TIM4.Period=1023
TIM4.Pulse-PWM\ Generation1\ CH1=511
USART2.IPParameters=VirtualMode-Asynchronous
USART2.VirtualMode-Asynchronous=VM_ASYNC
VP_SYS_VS_Systick.Mode=SysTick