Compare commits
3 Commits
527585217c
...
76ba24e527
| Author | SHA1 | Date | |
|---|---|---|---|
| 76ba24e527 | |||
| dd8c727f0b | |||
| 843e74ded0 |
1
firmware/.vscode/launch.json
vendored
1
firmware/.vscode/launch.json
vendored
@@ -14,7 +14,6 @@
|
||||
"servertype": "jlink",
|
||||
"device": "STM32F303RE",
|
||||
"interface": "swd",
|
||||
"runToMain": true,
|
||||
"svdFile": "STM32F303xE.svd",
|
||||
"preLaunchTask": "${defaultBuildTask}",
|
||||
"rttConfig": {
|
||||
|
||||
@@ -32,6 +32,8 @@ extern "C" {
|
||||
|
||||
/* USER CODE END Includes */
|
||||
|
||||
extern TIM_HandleTypeDef htim1;
|
||||
|
||||
extern TIM_HandleTypeDef htim2;
|
||||
|
||||
extern TIM_HandleTypeDef htim3;
|
||||
@@ -42,6 +44,7 @@ extern TIM_HandleTypeDef htim17;
|
||||
|
||||
/* USER CODE END Private defines */
|
||||
|
||||
void MX_TIM1_Init(void);
|
||||
void MX_TIM2_Init(void);
|
||||
void MX_TIM3_Init(void);
|
||||
void MX_TIM17_Init(void);
|
||||
|
||||
@@ -67,9 +67,9 @@ void RTT_console_logger(ulog_level_t severity, char *msg);
|
||||
/* USER CODE END 0 */
|
||||
|
||||
/**
|
||||
* @brief The application entry point.
|
||||
* @retval int
|
||||
*/
|
||||
* @brief The application entry point.
|
||||
* @retval int
|
||||
*/
|
||||
int main(void)
|
||||
{
|
||||
/* USER CODE BEGIN 1 */
|
||||
@@ -101,52 +101,56 @@ int main(void)
|
||||
MX_TIM2_Init();
|
||||
MX_TIM3_Init();
|
||||
MX_TIM17_Init();
|
||||
MX_TIM1_Init();
|
||||
/* USER CODE BEGIN 2 */
|
||||
ulog_init();
|
||||
ulog_subscribe(RTT_console_logger, ULOG_TRACE_LEVEL);
|
||||
ulog_init();
|
||||
ulog_subscribe(RTT_console_logger, ULOG_TRACE_LEVEL);
|
||||
|
||||
HAL_TIM_Encoder_Start(&htim3, TIM_CHANNEL_ALL);
|
||||
// SEGGER_RTT_WriteString(0, "App start...\n");
|
||||
ULOG_INFO("start app...");
|
||||
HAL_TIM_Encoder_Start(&htim3, TIM_CHANNEL_ALL);
|
||||
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2);
|
||||
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_3);
|
||||
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_4);
|
||||
// SEGGER_RTT_WriteString(0, "App start...\n");
|
||||
ULOG_INFO("start app...");
|
||||
|
||||
hst7565.hspi = &hspi3;
|
||||
hst7565.cs_port = ST7565_CS_GPIO_Port;
|
||||
hst7565.cs_pin = ST7565_CS_Pin;
|
||||
hst7565.a0_port = ST7565_A0_GPIO_Port;
|
||||
hst7565.a0_pin = ST7565_A0_Pin;
|
||||
hst7565.rst_port = ST7565_RST_GPIO_Port;
|
||||
hst7565.rst_pin = ST7565_RST_Pin;
|
||||
ST7565_Init(&hst7565, &disp);
|
||||
hst7565.hspi = &hspi3;
|
||||
hst7565.cs_port = ST7565_CS_GPIO_Port;
|
||||
hst7565.cs_pin = ST7565_CS_Pin;
|
||||
hst7565.a0_port = ST7565_A0_GPIO_Port;
|
||||
hst7565.a0_pin = ST7565_A0_Pin;
|
||||
hst7565.rst_port = ST7565_RST_GPIO_Port;
|
||||
hst7565.rst_pin = ST7565_RST_Pin;
|
||||
ST7565_Init(&hst7565, &disp);
|
||||
|
||||
/* USER CODE END 2 */
|
||||
|
||||
/* Infinite loop */
|
||||
/* USER CODE BEGIN WHILE */
|
||||
DISP_clearScreen(&disp);
|
||||
ST7565_DisplayAll(&hst7565);
|
||||
HAL_Delay(1000);
|
||||
uint32_t last_tick = HAL_GetTick();
|
||||
APP_init(&app_data);
|
||||
while (1)
|
||||
{
|
||||
CTRL_buttonsHandler();
|
||||
if (HAL_GetTick() - last_tick > 100)
|
||||
{
|
||||
last_tick = HAL_GetTick();
|
||||
ST7565_DisplayAll(&hst7565);
|
||||
LAY_drawDisplayLayout(&disp, &app_data);
|
||||
}
|
||||
DISP_clearScreen(&disp);
|
||||
ST7565_DisplayAll(&hst7565);
|
||||
HAL_Delay(1000);
|
||||
uint32_t last_tick = HAL_GetTick();
|
||||
APP_init(&app_data);
|
||||
while (1)
|
||||
{
|
||||
CTRL_buttonsHandler();
|
||||
if (HAL_GetTick() - last_tick > 100)
|
||||
{
|
||||
last_tick = HAL_GetTick();
|
||||
ST7565_DisplayAll(&hst7565);
|
||||
LAY_drawDisplayLayout(&disp, &app_data);
|
||||
}
|
||||
/* USER CODE END WHILE */
|
||||
|
||||
/* USER CODE BEGIN 3 */
|
||||
}
|
||||
}
|
||||
/* USER CODE END 3 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief System Clock Configuration
|
||||
* @retval None
|
||||
*/
|
||||
* @brief System Clock Configuration
|
||||
* @retval None
|
||||
*/
|
||||
void SystemClock_Config(void)
|
||||
{
|
||||
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
|
||||
@@ -154,8 +158,8 @@ void SystemClock_Config(void)
|
||||
RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
|
||||
|
||||
/** Initializes the RCC Oscillators according to the specified parameters
|
||||
* in the RCC_OscInitTypeDef structure.
|
||||
*/
|
||||
* in the RCC_OscInitTypeDef structure.
|
||||
*/
|
||||
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
|
||||
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
|
||||
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
|
||||
@@ -169,9 +173,8 @@ void SystemClock_Config(void)
|
||||
}
|
||||
|
||||
/** Initializes the CPU, AHB and APB buses clocks
|
||||
*/
|
||||
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|
||||
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
|
||||
*/
|
||||
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
|
||||
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
|
||||
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
|
||||
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
|
||||
@@ -181,11 +184,10 @@ void SystemClock_Config(void)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART2|RCC_PERIPHCLK_I2C1
|
||||
|RCC_PERIPHCLK_TIM17|RCC_PERIPHCLK_TIM2
|
||||
|RCC_PERIPHCLK_TIM34;
|
||||
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_TIM1 | RCC_PERIPHCLK_TIM17 | RCC_PERIPHCLK_TIM2 | RCC_PERIPHCLK_TIM34;
|
||||
PeriphClkInit.Usart2ClockSelection = RCC_USART2CLKSOURCE_PCLK1;
|
||||
PeriphClkInit.I2c1ClockSelection = RCC_I2C1CLKSOURCE_HSI;
|
||||
PeriphClkInit.Tim1ClockSelection = RCC_TIM1CLK_HCLK;
|
||||
PeriphClkInit.Tim17ClockSelection = RCC_TIM17CLK_HCLK;
|
||||
PeriphClkInit.Tim2ClockSelection = RCC_TIM2CLK_HCLK;
|
||||
PeriphClkInit.Tim34ClockSelection = RCC_TIM34CLK_HCLK;
|
||||
@@ -198,41 +200,41 @@ void SystemClock_Config(void)
|
||||
/* USER CODE BEGIN 4 */
|
||||
void RTT_console_logger(ulog_level_t severity, char *msg)
|
||||
{
|
||||
SEGGER_RTT_printf(0, "[%s]: %s\n",
|
||||
// HAL_GetTick(), // user defined function
|
||||
ulog_level_name(severity),
|
||||
msg);
|
||||
SEGGER_RTT_printf(0, "[%s]: %s\n",
|
||||
// HAL_GetTick(), // user defined function
|
||||
ulog_level_name(severity),
|
||||
msg);
|
||||
}
|
||||
/* USER CODE END 4 */
|
||||
|
||||
/**
|
||||
* @brief This function is executed in case of error occurrence.
|
||||
* @retval None
|
||||
*/
|
||||
* @brief This function is executed in case of error occurrence.
|
||||
* @retval None
|
||||
*/
|
||||
void Error_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN Error_Handler_Debug */
|
||||
/* User can add his own implementation to report the HAL error return state */
|
||||
__disable_irq();
|
||||
while (1)
|
||||
{
|
||||
}
|
||||
/* User can add his own implementation to report the HAL error return state */
|
||||
__disable_irq();
|
||||
while (1)
|
||||
{
|
||||
}
|
||||
/* USER CODE END Error_Handler_Debug */
|
||||
}
|
||||
|
||||
#ifdef USE_FULL_ASSERT
|
||||
#ifdef USE_FULL_ASSERT
|
||||
/**
|
||||
* @brief Reports the name of the source file and the source line number
|
||||
* where the assert_param error has occurred.
|
||||
* @param file: pointer to the source file name
|
||||
* @param line: assert_param error line source number
|
||||
* @retval None
|
||||
*/
|
||||
* @brief Reports the name of the source file and the source line number
|
||||
* where the assert_param error has occurred.
|
||||
* @param file: pointer to the source file name
|
||||
* @param line: assert_param error line source number
|
||||
* @retval None
|
||||
*/
|
||||
void assert_failed(uint8_t *file, uint32_t line)
|
||||
{
|
||||
/* USER CODE BEGIN 6 */
|
||||
/* User can add his own implementation to report the file name and line number,
|
||||
ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
|
||||
/* User can add his own implementation to report the file name and line number,
|
||||
ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
|
||||
/* USER CODE END 6 */
|
||||
}
|
||||
#endif /* USE_FULL_ASSERT */
|
||||
|
||||
@@ -24,10 +24,95 @@
|
||||
|
||||
/* USER CODE END 0 */
|
||||
|
||||
TIM_HandleTypeDef htim1;
|
||||
TIM_HandleTypeDef htim2;
|
||||
TIM_HandleTypeDef htim3;
|
||||
TIM_HandleTypeDef htim17;
|
||||
|
||||
/* TIM1 init function */
|
||||
void MX_TIM1_Init(void)
|
||||
{
|
||||
|
||||
/* USER CODE BEGIN TIM1_Init 0 */
|
||||
|
||||
/* USER CODE END TIM1_Init 0 */
|
||||
|
||||
TIM_ClockConfigTypeDef sClockSourceConfig = {0};
|
||||
TIM_MasterConfigTypeDef sMasterConfig = {0};
|
||||
TIM_OC_InitTypeDef sConfigOC = {0};
|
||||
TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0};
|
||||
|
||||
/* USER CODE BEGIN TIM1_Init 1 */
|
||||
|
||||
/* USER CODE END TIM1_Init 1 */
|
||||
htim1.Instance = TIM1;
|
||||
htim1.Init.Prescaler = 0;
|
||||
htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||
htim1.Init.Period = 2;
|
||||
htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||
htim1.Init.RepetitionCounter = 0;
|
||||
htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
|
||||
if (HAL_TIM_Base_Init(&htim1) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
||||
if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
if (HAL_TIM_PWM_Init(&htim1) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||
sMasterConfig.MasterOutputTrigger2 = TIM_TRGO2_RESET;
|
||||
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||
if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
||||
sConfigOC.Pulse = 1;
|
||||
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
||||
sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
|
||||
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
|
||||
sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
|
||||
sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
|
||||
if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
sConfigOC.OCFastMode = TIM_OCFAST_ENABLE;
|
||||
if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_4) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;
|
||||
sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;
|
||||
sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
|
||||
sBreakDeadTimeConfig.DeadTime = 0;
|
||||
sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
|
||||
sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
|
||||
sBreakDeadTimeConfig.BreakFilter = 0;
|
||||
sBreakDeadTimeConfig.Break2State = TIM_BREAK2_DISABLE;
|
||||
sBreakDeadTimeConfig.Break2Polarity = TIM_BREAK2POLARITY_HIGH;
|
||||
sBreakDeadTimeConfig.Break2Filter = 0;
|
||||
sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
|
||||
if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
/* USER CODE BEGIN TIM1_Init 2 */
|
||||
|
||||
/* USER CODE END TIM1_Init 2 */
|
||||
HAL_TIM_MspPostInit(&htim1);
|
||||
|
||||
}
|
||||
/* TIM2 init function */
|
||||
void MX_TIM2_Init(void)
|
||||
{
|
||||
@@ -174,7 +259,18 @@ void MX_TIM17_Init(void)
|
||||
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
|
||||
{
|
||||
|
||||
if(tim_baseHandle->Instance==TIM2)
|
||||
if(tim_baseHandle->Instance==TIM1)
|
||||
{
|
||||
/* USER CODE BEGIN TIM1_MspInit 0 */
|
||||
|
||||
/* USER CODE END TIM1_MspInit 0 */
|
||||
/* TIM1 clock enable */
|
||||
__HAL_RCC_TIM1_CLK_ENABLE();
|
||||
/* USER CODE BEGIN TIM1_MspInit 1 */
|
||||
|
||||
/* USER CODE END TIM1_MspInit 1 */
|
||||
}
|
||||
else if(tim_baseHandle->Instance==TIM2)
|
||||
{
|
||||
/* USER CODE BEGIN TIM2_MspInit 0 */
|
||||
|
||||
@@ -231,7 +327,29 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
|
||||
{
|
||||
|
||||
GPIO_InitTypeDef GPIO_InitStruct = {0};
|
||||
if(timHandle->Instance==TIM17)
|
||||
if(timHandle->Instance==TIM1)
|
||||
{
|
||||
/* USER CODE BEGIN TIM1_MspPostInit 0 */
|
||||
|
||||
/* USER CODE END TIM1_MspPostInit 0 */
|
||||
__HAL_RCC_GPIOC_CLK_ENABLE();
|
||||
/**TIM1 GPIO Configuration
|
||||
PC1 ------> TIM1_CH2
|
||||
PC2 ------> TIM1_CH3
|
||||
PC3 ------> TIM1_CH4
|
||||
*/
|
||||
GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
|
||||
GPIO_InitStruct.Alternate = GPIO_AF2_TIM1;
|
||||
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
|
||||
|
||||
/* USER CODE BEGIN TIM1_MspPostInit 1 */
|
||||
|
||||
/* USER CODE END TIM1_MspPostInit 1 */
|
||||
}
|
||||
else if(timHandle->Instance==TIM17)
|
||||
{
|
||||
/* USER CODE BEGIN TIM17_MspPostInit 0 */
|
||||
|
||||
@@ -258,7 +376,18 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
|
||||
void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle)
|
||||
{
|
||||
|
||||
if(tim_baseHandle->Instance==TIM2)
|
||||
if(tim_baseHandle->Instance==TIM1)
|
||||
{
|
||||
/* USER CODE BEGIN TIM1_MspDeInit 0 */
|
||||
|
||||
/* USER CODE END TIM1_MspDeInit 0 */
|
||||
/* Peripheral clock disable */
|
||||
__HAL_RCC_TIM1_CLK_DISABLE();
|
||||
/* USER CODE BEGIN TIM1_MspDeInit 1 */
|
||||
|
||||
/* USER CODE END TIM1_MspDeInit 1 */
|
||||
}
|
||||
else if(tim_baseHandle->Instance==TIM2)
|
||||
{
|
||||
/* USER CODE BEGIN TIM2_MspDeInit 0 */
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
##########################################################################################################################
|
||||
# File automatically-generated by tool: [projectgenerator] version: [3.17.1] date: [Tue Aug 01 10:57:07 CEST 2023]
|
||||
# File automatically-generated by tool: [projectgenerator] version: [3.17.1] date: [Sat Aug 12 13:08:17 CEST 2023]
|
||||
##########################################################################################################################
|
||||
|
||||
# ------------------------------------------------
|
||||
|
||||
@@ -9,57 +9,62 @@ Mcu.CPN=STM32F303RET6
|
||||
Mcu.Family=STM32F3
|
||||
Mcu.IP0=I2C1
|
||||
Mcu.IP1=NVIC
|
||||
Mcu.IP10=USART2
|
||||
Mcu.IP2=RCC
|
||||
Mcu.IP3=SPI2
|
||||
Mcu.IP4=SPI3
|
||||
Mcu.IP5=SYS
|
||||
Mcu.IP6=TIM2
|
||||
Mcu.IP7=TIM3
|
||||
Mcu.IP8=TIM17
|
||||
Mcu.IP9=USART2
|
||||
Mcu.IPNb=10
|
||||
Mcu.IP6=TIM1
|
||||
Mcu.IP7=TIM2
|
||||
Mcu.IP8=TIM3
|
||||
Mcu.IP9=TIM17
|
||||
Mcu.IPNb=11
|
||||
Mcu.Name=STM32F303R(D-E)Tx
|
||||
Mcu.Package=LQFP64
|
||||
Mcu.Pin0=PC13
|
||||
Mcu.Pin1=PC14-OSC32_IN
|
||||
Mcu.Pin10=PA5
|
||||
Mcu.Pin11=PA6
|
||||
Mcu.Pin12=PA7
|
||||
Mcu.Pin13=PB10
|
||||
Mcu.Pin14=PB11
|
||||
Mcu.Pin15=PB12
|
||||
Mcu.Pin16=PB13
|
||||
Mcu.Pin17=PB14
|
||||
Mcu.Pin18=PB15
|
||||
Mcu.Pin19=PC8
|
||||
Mcu.Pin10=PA2
|
||||
Mcu.Pin11=PA3
|
||||
Mcu.Pin12=PA4
|
||||
Mcu.Pin13=PA5
|
||||
Mcu.Pin14=PA6
|
||||
Mcu.Pin15=PA7
|
||||
Mcu.Pin16=PB10
|
||||
Mcu.Pin17=PB11
|
||||
Mcu.Pin18=PB12
|
||||
Mcu.Pin19=PB13
|
||||
Mcu.Pin2=PC15-OSC32_OUT
|
||||
Mcu.Pin20=PC9
|
||||
Mcu.Pin21=PA8
|
||||
Mcu.Pin22=PA9
|
||||
Mcu.Pin23=PA10
|
||||
Mcu.Pin24=PA11
|
||||
Mcu.Pin25=PA12
|
||||
Mcu.Pin26=PA13
|
||||
Mcu.Pin27=PA14
|
||||
Mcu.Pin28=PC10
|
||||
Mcu.Pin29=PC11
|
||||
Mcu.Pin20=PB14
|
||||
Mcu.Pin21=PB15
|
||||
Mcu.Pin22=PC8
|
||||
Mcu.Pin23=PC9
|
||||
Mcu.Pin24=PA8
|
||||
Mcu.Pin25=PA9
|
||||
Mcu.Pin26=PA10
|
||||
Mcu.Pin27=PA11
|
||||
Mcu.Pin28=PA12
|
||||
Mcu.Pin29=PA13
|
||||
Mcu.Pin3=PF0-OSC_IN
|
||||
Mcu.Pin30=PC12
|
||||
Mcu.Pin31=PB3
|
||||
Mcu.Pin32=PB5
|
||||
Mcu.Pin33=PB6
|
||||
Mcu.Pin34=PB7
|
||||
Mcu.Pin35=PB9
|
||||
Mcu.Pin36=VP_SYS_VS_Systick
|
||||
Mcu.Pin37=VP_TIM2_VS_ClockSourceINT
|
||||
Mcu.Pin38=VP_TIM17_VS_ClockSourceINT
|
||||
Mcu.Pin30=PA14
|
||||
Mcu.Pin31=PC10
|
||||
Mcu.Pin32=PC11
|
||||
Mcu.Pin33=PC12
|
||||
Mcu.Pin34=PB3
|
||||
Mcu.Pin35=PB5
|
||||
Mcu.Pin36=PB6
|
||||
Mcu.Pin37=PB7
|
||||
Mcu.Pin38=PB9
|
||||
Mcu.Pin39=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=39
|
||||
Mcu.Pin40=VP_TIM1_VS_ClockSourceINT
|
||||
Mcu.Pin41=VP_TIM2_VS_ClockSourceINT
|
||||
Mcu.Pin42=VP_TIM17_VS_ClockSourceINT
|
||||
Mcu.Pin5=PC1
|
||||
Mcu.Pin6=PC2
|
||||
Mcu.Pin7=PC3
|
||||
Mcu.Pin8=PA0
|
||||
Mcu.Pin9=PA1
|
||||
Mcu.PinsNb=43
|
||||
Mcu.ThirdPartyNb=0
|
||||
Mcu.UserConstants=
|
||||
Mcu.UserName=STM32F303RETx
|
||||
@@ -173,6 +178,9 @@ PB9.GPIOParameters=GPIO_Label
|
||||
PB9.GPIO_Label=AMP2_CS
|
||||
PB9.Locked=true
|
||||
PB9.Signal=GPIO_Output
|
||||
PC1.GPIOParameters=GPIO_Speed
|
||||
PC1.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
|
||||
PC1.Signal=S_TIM1_CH2
|
||||
PC10.GPIOParameters=GPIO_Label
|
||||
PC10.GPIO_Label=ST7565_SCK
|
||||
PC10.Locked=true
|
||||
@@ -197,6 +205,12 @@ PC14-OSC32_IN.Signal=RCC_OSC32_IN
|
||||
PC15-OSC32_OUT.Locked=true
|
||||
PC15-OSC32_OUT.Mode=LSE-External-Oscillator
|
||||
PC15-OSC32_OUT.Signal=RCC_OSC32_OUT
|
||||
PC2.GPIOParameters=GPIO_Speed
|
||||
PC2.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
|
||||
PC2.Signal=S_TIM1_CH3
|
||||
PC3.GPIOParameters=GPIO_Speed
|
||||
PC3.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
|
||||
PC3.Signal=S_TIM1_CH4
|
||||
PC8.GPIOParameters=GPIO_Label
|
||||
PC8.GPIO_Label=ST7565_RST
|
||||
PC8.Locked=true
|
||||
@@ -238,7 +252,7 @@ ProjectManager.StackSize=0x400
|
||||
ProjectManager.TargetToolchain=Makefile
|
||||
ProjectManager.ToolChainLocation=
|
||||
ProjectManager.UnderRoot=false
|
||||
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_USART2_UART_Init-USART2-false-HAL-true,4-MX_SPI2_Init-SPI2-false-HAL-true,5-MX_I2C1_Init-I2C1-false-HAL-true,6-MX_SPI3_Init-SPI3-false-HAL-true,7-MX_TIM2_Init-TIM2-false-HAL-true,8-MX_TIM3_Init-TIM3-false-HAL-true
|
||||
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_USART2_UART_Init-USART2-false-HAL-true,4-MX_SPI2_Init-SPI2-false-HAL-true,5-MX_I2C1_Init-I2C1-false-HAL-true,6-MX_SPI3_Init-SPI3-false-HAL-true,7-MX_TIM2_Init-TIM2-false-HAL-true,8-MX_TIM3_Init-TIM3-false-HAL-true,9-MX_TIM17_Init-TIM17-false-HAL-true,10-MX_TIM1_Init-TIM1-false-HAL-true
|
||||
RCC.ADC12outputFreq_Value=72000000
|
||||
RCC.ADC34outputFreq_Value=72000000
|
||||
RCC.AHBFreq_Value=72000000
|
||||
@@ -293,6 +307,12 @@ SH.GPXTI13.0=GPIO_EXTI13
|
||||
SH.GPXTI13.ConfNb=1
|
||||
SH.S_TIM17_CH1.0=TIM17_CH1,PWM Generation1 CH1
|
||||
SH.S_TIM17_CH1.ConfNb=1
|
||||
SH.S_TIM1_CH2.0=TIM1_CH2,PWM Generation2 CH2
|
||||
SH.S_TIM1_CH2.ConfNb=1
|
||||
SH.S_TIM1_CH3.0=TIM1_CH3,PWM Generation3 CH3
|
||||
SH.S_TIM1_CH3.ConfNb=1
|
||||
SH.S_TIM1_CH4.0=TIM1_CH4,PWM Generation4 CH4
|
||||
SH.S_TIM1_CH4.ConfNb=1
|
||||
SH.S_TIM3_CH1.0=TIM3_CH1,Encoder_Interface
|
||||
SH.S_TIM3_CH1.ConfNb=1
|
||||
SH.S_TIM3_CH2.0=TIM3_CH2,Encoder_Interface
|
||||
@@ -313,6 +333,16 @@ SPI3.Direction=SPI_DIRECTION_1LINE
|
||||
SPI3.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler,DataSize
|
||||
SPI3.Mode=SPI_MODE_MASTER
|
||||
SPI3.VirtualType=VM_MASTER
|
||||
TIM1.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE
|
||||
TIM1.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2
|
||||
TIM1.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3
|
||||
TIM1.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4
|
||||
TIM1.IPParameters=Channel-PWM Generation4 CH4,Channel-PWM Generation3 CH3,Channel-PWM Generation2 CH2,Period,Pulse-PWM Generation2 CH2,Pulse-PWM Generation3 CH3,Pulse-PWM Generation4 CH4,AutoReloadPreload,OCFastMode_PWM-PWM Generation4 CH4
|
||||
TIM1.OCFastMode_PWM-PWM\ Generation4\ CH4=TIM_OCFAST_ENABLE
|
||||
TIM1.Period=2
|
||||
TIM1.Pulse-PWM\ Generation2\ CH2=1
|
||||
TIM1.Pulse-PWM\ Generation3\ CH3=1
|
||||
TIM1.Pulse-PWM\ Generation4\ CH4=1
|
||||
TIM17.Channel=TIM_CHANNEL_1
|
||||
TIM17.IPParameters=Channel,Period,OCFastMode_PWM,OCIdleState_1,Pulse
|
||||
TIM17.OCFastMode_PWM=TIM_OCFAST_ENABLE
|
||||
@@ -331,6 +361,8 @@ VP_SYS_VS_Systick.Mode=SysTick
|
||||
VP_SYS_VS_Systick.Signal=SYS_VS_Systick
|
||||
VP_TIM17_VS_ClockSourceINT.Mode=Enable_Timer
|
||||
VP_TIM17_VS_ClockSourceINT.Signal=TIM17_VS_ClockSourceINT
|
||||
VP_TIM1_VS_ClockSourceINT.Mode=Internal
|
||||
VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT
|
||||
VP_TIM2_VS_ClockSourceINT.Mode=Internal
|
||||
VP_TIM2_VS_ClockSourceINT.Signal=TIM2_VS_ClockSourceINT
|
||||
board=NUCLEO-F303RE
|
||||
|
||||
@@ -157,9 +157,9 @@ void CTRL_longPushedChanBtnEvent(ButtonKey_t *key)
|
||||
|
||||
if (channel == CHANNEL2)
|
||||
{
|
||||
if (HAL_TIM_Base_Start(&htim17) == HAL_ERROR)
|
||||
if (HAL_TIM_PWM_Start(&htim17, TIM_CHANNEL_1) == HAL_ERROR)
|
||||
{
|
||||
HAL_TIM_Base_Stop(&htim17);
|
||||
HAL_TIM_PWM_Stop(&htim17, TIM_CHANNEL_1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7,15 +7,25 @@
|
||||
// static uint32_t ad9833_calcFreq(float f); // Calculate AD9833 frequency register from a frequency
|
||||
// static uint16_t ad9833_calcPhase(float a); // Calculate AD9833 phase register from phase
|
||||
|
||||
void ad9833_spi_activate(ad9833_handle_t *hfg)
|
||||
{
|
||||
HAL_GPIO_WritePin(hfg->cs_port, hfg->cs_pin, GPIO_PIN_RESET);
|
||||
}
|
||||
|
||||
void ad9833_spi_deactivate(ad9833_handle_t *hfg)
|
||||
{
|
||||
HAL_GPIO_WritePin(hfg->cs_port, hfg->cs_pin, GPIO_PIN_SET);
|
||||
}
|
||||
|
||||
static void ad9833_transmit16(ad9833_handle_t *hfg, uint16_t data)
|
||||
{
|
||||
uint8_t data8;
|
||||
HAL_GPIO_WritePin(hfg->cs_port, hfg->cs_pin, GPIO_PIN_RESET);
|
||||
ad9833_spi_activate(hfg);
|
||||
data8 = (uint8_t)((data >> 8) & 0x00FF);
|
||||
HAL_SPI_Transmit(hfg->hspi, &data8, 1, 1);
|
||||
HAL_SPI_Transmit(hfg->hspi, &data8, 1, HAL_MAX_DELAY);
|
||||
data8 = (uint8_t)(data & 0x00FF);
|
||||
HAL_SPI_Transmit(hfg->hspi, &data8, 1, 1);
|
||||
HAL_GPIO_WritePin(hfg->cs_port, hfg->cs_pin, GPIO_PIN_SET);
|
||||
HAL_SPI_Transmit(hfg->hspi, &data8, 1, HAL_MAX_DELAY);
|
||||
ad9833_spi_deactivate(hfg);
|
||||
}
|
||||
|
||||
void ad9833_reset(ad9833_handle_t *hfg, uint8_t hold)
|
||||
|
||||
@@ -47,6 +47,8 @@ typedef struct
|
||||
} ad9833_handle_t;
|
||||
|
||||
void ad9833_init(ad9833_handle_t *hfg, SPI_HandleTypeDef *hspi, GPIO_TypeDef *cs_port, uint16_t cs_pin);
|
||||
void ad9833_spi_activate(ad9833_handle_t *hfg);
|
||||
void ad9833_spi_deactivate(ad9833_handle_t *hfg);
|
||||
void ad9833_reset(ad9833_handle_t *hfg, uint8_t hold);
|
||||
void ad9833_setActiveChannelFreq(ad9833_handle_t *hfg, AD_channel_t chan);
|
||||
AD_channel_t ad9833_getActiveChannelFreq(ad9833_handle_t *hfg);
|
||||
|
||||
@@ -6,7 +6,7 @@ static uint32_t pot_value[MCP41X_RES_MAX] = {10000, 50000, 100000};
|
||||
static void mcp41x_transmit(mcp41x_handle_t *hpot, uint8_t *data)
|
||||
{
|
||||
HAL_GPIO_WritePin(hpot->cs_port, hpot->cs_pin, GPIO_PIN_RESET);
|
||||
HAL_SPI_Transmit(hpot->hspi, data, 2, 1);
|
||||
HAL_SPI_Transmit(hpot->hspi, data, 2, HAL_MAX_DELAY);
|
||||
HAL_GPIO_WritePin(hpot->cs_port, hpot->cs_pin, GPIO_PIN_SET);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user