This commit is contained in:
leo 2023-08-24 16:51:15 +02:00
parent b478600af6
commit 6d7e744ddb
Signed by: leo
GPG Key ID: 0DD993BFB2B307DB
10 changed files with 228 additions and 6 deletions

View File

@ -23,6 +23,8 @@ typedef struct{
uint32_t step_itvl;
uint8_t step_max;
uint32_t tick_counter;
int32_t steps_counter;
uint8_t stopAtHome;
GPIO_TypeDef* EN_GPIO_Port;
uint16_t EN_GPIO_Pin;

View File

@ -17,6 +17,7 @@
void pse_sp_start_axis(pse_stepper_conf* conf);
void pse_sp_stop_axis(pse_stepper_conf* conf);
void pse_sp_set_dir(pse_stepper_conf* conf, int dir);
//int pse_sp_get_dir(pse_stepper_conf* conf);
void pse_stepper_planer_tick(pse_unit* units, uint8_t units_num);
void pse_sp_start_all(pse_unit* units, int unit_num);

View File

@ -160,6 +160,15 @@ static void jog_backward_button_handler(lv_event_t* e){
pse_sp_stop_axis(unit->stepper_conf);
}
}
static void set_home_button_handler(lv_event_t* e){
lv_event_code_t code = lv_event_get_code(e);
pse_unit* unit = lv_event_get_user_data(e);
if(code == LV_EVENT_CLICKED) {
unit->stepper_conf->steps_counter = 0;
}
}
static lv_obj_t* controls_widget(lv_obj_t* parent, pse_unit* unit){
// The main container
@ -189,6 +198,7 @@ static lv_obj_t* controls_widget(lv_obj_t* parent, pse_unit* unit){
lv_obj_t* home_label = lv_label_create(home);
lv_obj_set_width(home, lv_pct(100));
lv_obj_set_flex_grow(home, 1);
lv_obj_add_event_cb(home, set_home_button_handler, LV_EVENT_ALL, unit);
lv_label_set_text(home_label, LV_SYMBOL_HOME);
lv_obj_center(home_label);
return cont;

View File

@ -62,6 +62,19 @@ static void unit_widget_enabled_handler(lv_event_t * e){
}
}
static void unit_home_handler(lv_event_t * e){
lv_event_code_t code = lv_event_get_code(e);
if(code == LV_EVENT_CLICKED) {
pse_unit* unit = lv_event_get_user_data(e);
pse_stepper_conf* c = unit->stepper_conf;
c->stopAtHome = 1;
c->step_max = 1;
pse_sp_set_dir(c, 1);
pse_sp_start_axis(c);
}
}
static void unit_widget_clicked_handler(lv_event_t* e){
lv_event_code_t code = lv_event_get_code(e);
@ -94,6 +107,7 @@ static lv_obj_t* PSE_unit_widget(lv_obj_t* parent, pse_unit* pse_unit){
lv_obj_t* home = lv_btn_create(cont);
lv_obj_t* home_label = lv_label_create(home);
lv_obj_set_width(home, lv_pct(100));
lv_obj_add_event_cb(home, unit_home_handler, LV_EVENT_ALL, pse_unit);
lv_obj_set_flex_grow(home, 1);
lv_obj_center(home_label);
lv_label_set_text(home_label, LV_SYMBOL_HOME);

View File

@ -42,7 +42,7 @@
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
#define BUFF_SIZE (320 * 10)
#define BUFF_SIZE (320 * 5)
#define LCD_WIDTH 320
#define LCD_HEIGHT 240
/* USER CODE END PD */
@ -155,7 +155,7 @@ void my_flush_cb(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * buf)
drawYmax = area->y2;
ILI9341_SetCursor(area->x1,drawY);
ILI9341_WriteRam();
drawLineLen = (area->x2 - area->x1);
drawLineLen = (area->x2 - area->x1)+1;
drawY++;
drawBuf = buf;
drawDisp = disp;
@ -387,7 +387,7 @@ static void MX_TIM4_Init(void)
htim4.Instance = TIM4;
htim4.Init.Prescaler = 64;
htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
htim4.Init.Period = 50;
htim4.Init.Period = 100;
htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
if (HAL_TIM_Base_Init(&htim4) != HAL_OK)
@ -643,7 +643,7 @@ void XferCpltCallback(DMA_HandleTypeDef *hdma){
ILI9341_SetCursor(drawXmin,drawY);
ILI9341_WriteRam();
drawY++;
drawBuf+=drawLineLen+1;
drawBuf+=drawLineLen;
hdma_memtomem_dma2_channel1.XferCpltCallback=&XferCpltCallback;
HAL_DMA_Start_IT(&hdma_memtomem_dma2_channel1, (uint32_t)drawBuf, (uint32_t)LCD_IO_getDataPt(), drawLineLen);
}

View File

@ -29,6 +29,10 @@ void pse_stepper_planer_tick(pse_unit* units, uint8_t units_num){
}
c->tick_counter++;
HAL_GPIO_WritePin(c->STEP_GPIO_Port, c->STEP_GPIO_Pin, state);
/*c->steps_counter += (pse_sp_get_dir(c)?1:-1) * (state?1:0);
if(c->stopAtHome && c->steps_counter == 0){
pse_sp_stop_axis(c);
}*/
}
}
@ -54,6 +58,9 @@ void pse_sp_set_dir(pse_stepper_conf* conf, int dir){
HAL_GPIO_WritePin(conf->DIR_GPIO_Port, conf->DIR_GPIO_Pin, dir);
}
/*int pse_sp_get_dir(pse_stepper_conf* conf){
return HAL_GPIO_ReadPin(conf->DIR_GPIO_Port, conf->DIR_GPIO_Pin);
}*/
void pse_stepper_planer_compute_sps(pse_unit* unit){
pse_stepper_conf* c = unit->stepper_conf;

View File

@ -49,7 +49,7 @@
#define LV_MEM_CUSTOM 0
#if LV_MEM_CUSTOM == 0
/*Size of the memory available for `lv_mem_alloc()` in bytes (>= 2kB)*/
#define LV_MEM_SIZE (32U * 1024U) /*[bytes]*/
#define LV_MEM_SIZE (48U * 1024U) /*[bytes]*/
/*Set an address for the memory pool instead of allocating it as a normal array. Can be in external SRAM too.*/
#define LV_MEM_ADR 0 /*0: unused*/

View File

@ -312,7 +312,7 @@ SDIO.HardwareFlowControl=SDIO_HARDWARE_FLOW_CONTROL_DISABLE
SDIO.IPParameters=ClockDiv,HardwareFlowControl
TIM4.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE
TIM4.IPParameters=Prescaler,Period,AutoReloadPreload
TIM4.Period=50
TIM4.Period=100
TIM4.Prescaler=64
USART1.IPParameters=VirtualMode
USART1.VirtualMode=VM_ASYNC

BIN
PSE.pdf Normal file

Binary file not shown.

188
PSE.txt Normal file
View File

@ -0,0 +1,188 @@
Configuration PSE
STM32CubeMX 6.9.1
Date 08/24/2023
MCU STM32F103VETx
PERIPHERALS MODES FUNCTIONS PINS
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 NE1 FSMC_NE1 PD7
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 LCD Interface FSMC_NOE PD4
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 LCD Interface FSMC_NWE PD5
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 A16 FSMC_A16 PD11
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D0 PD14
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D1 PD15
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D2 PD0
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D3 PD1
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D4 PE7
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D5 PE8
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D6 PE9
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D7 PE10
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D8 PE11
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D9 PE12
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D10 PE13
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D11 PE14
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D12 PE15
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D13 PD8
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D14 PD9
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D15 PD10
SDIO SD 1 bit SDIO_CK PC12
SDIO SD 1 bit SDIO_CMD PD2
SDIO SD 1 bit SDIO_D0 PC8
SYS SysTick SYS_VS_Systick VP_SYS_VS_Systick
TIM4 Internal Clock TIM4_VS_ClockSourceINT VP_TIM4_VS_ClockSourceINT
USART1 Asynchronous USART1_RX PA10
USART1 Asynchronous USART1_TX PA9
Pin Nb PINs FUNCTIONs LABELs
1 PE2 GPIO_Output E_STEPPER_DIR
2 PE3 GPIO_Output E_STEPPER_STEP
3 PE4 GPIO_Output E_STEPPER_EN
17 PC2 GPIO_Output LED
33 PC4 GPIO_Output LCD_RST
38 PE7 FSMC_D4
39 PE8 FSMC_D5
40 PE9 FSMC_D6
41 PE10 FSMC_D7
42 PE11 FSMC_D8
43 PE12 FSMC_D9
44 PE13 FSMC_D10
45 PE14 FSMC_D11
46 PE15 FSMC_D12
51 PB12 GPIO_Output ADS7843_CS
52 PB13 GPIO_Output ADS7843_SCK
53 PB14 GPIO_Output ADS7843_MOSI
54 PB15 GPIO_Input ADS7843_MISO
55 PD8 FSMC_D13
56 PD9 FSMC_D14
57 PD10 FSMC_D15
58 PD11 FSMC_A16
59 PD12 GPIO_Output LCD_CS
61 PD14 FSMC_D0
62 PD15 FSMC_D1
63 PC6 GPIO_Input ADS7843_Int
65 PC8 SDIO_D0
68 PA9 USART1_TX
69 PA10 USART1_RX
80 PC12 SDIO_CK
81 PD0 FSMC_D2
82 PD1 FSMC_D3
83 PD2 SDIO_CMD
85 PD4 FSMC_NOE
86 PD5 FSMC_NWE
88 PD7 FSMC_NE1
89 PB3 GPIO_Output X_STEPPER_DIR
90 PB4 GPIO_Output X_STEPPER_STEP
91 PB5 GPIO_Output X_STEPPER_EN
92 PB6 GPIO_Output Y_STEPPER_DIR
93 PB7 GPIO_Output Y_STEPPER_STEP
95 PB8 GPIO_Output Y_STEPPER_EN
96 PB9 GPIO_Output Z_STEPPER_DIR
97 PE0 GPIO_Output Z_STEPPER_STEP
98 PE1 GPIO_Output Z_STEPPER_EN
PERIPHERALS MODES FUNCTIONS PINS
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 NE1 FSMC_NE1 PD7
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 LCD Interface FSMC_NOE PD4
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 LCD Interface FSMC_NWE PD5
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 A16 FSMC_A16 PD11
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D0 PD14
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D1 PD15
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D2 PD0
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D3 PD1
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D4 PE7
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D5 PE8
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D6 PE9
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D7 PE10
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D8 PE11
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D9 PE12
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D10 PE13
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D11 PE14
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D12 PE15
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D13 PD8
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D14 PD9
FSMC:NOR Flash/PSRAM/SRAM/ROM/LCD 1 16 bits FSMC_D15 PD10
SDIO SD 1 bit SDIO_CK PC12
SDIO SD 1 bit SDIO_CMD PD2
SDIO SD 1 bit SDIO_D0 PC8
SYS SysTick SYS_VS_Systick VP_SYS_VS_Systick
TIM4 Internal Clock TIM4_VS_ClockSourceINT VP_TIM4_VS_ClockSourceINT
USART1 Asynchronous USART1_RX PA10
USART1 Asynchronous USART1_TX PA9
Pin Nb PINs FUNCTIONs LABELs
1 PE2 GPIO_Output E_STEPPER_DIR
2 PE3 GPIO_Output E_STEPPER_STEP
3 PE4 GPIO_Output E_STEPPER_EN
17 PC2 GPIO_Output LED
33 PC4 GPIO_Output LCD_RST
38 PE7 FSMC_D4
39 PE8 FSMC_D5
40 PE9 FSMC_D6
41 PE10 FSMC_D7
42 PE11 FSMC_D8
43 PE12 FSMC_D9
44 PE13 FSMC_D10
45 PE14 FSMC_D11
46 PE15 FSMC_D12
51 PB12 GPIO_Output ADS7843_CS
52 PB13 GPIO_Output ADS7843_SCK
53 PB14 GPIO_Output ADS7843_MOSI
54 PB15 GPIO_Input ADS7843_MISO
55 PD8 FSMC_D13
56 PD9 FSMC_D14
57 PD10 FSMC_D15
58 PD11 FSMC_A16
59 PD12 GPIO_Output LCD_CS
61 PD14 FSMC_D0
62 PD15 FSMC_D1
63 PC6 GPIO_Input ADS7843_Int
65 PC8 SDIO_D0
68 PA9 USART1_TX
69 PA10 USART1_RX
80 PC12 SDIO_CK
81 PD0 FSMC_D2
82 PD1 FSMC_D3
83 PD2 SDIO_CMD
85 PD4 FSMC_NOE
86 PD5 FSMC_NWE
88 PD7 FSMC_NE1
89 PB3 GPIO_Output X_STEPPER_DIR
90 PB4 GPIO_Output X_STEPPER_STEP
91 PB5 GPIO_Output X_STEPPER_EN
92 PB6 GPIO_Output Y_STEPPER_DIR
93 PB7 GPIO_Output Y_STEPPER_STEP
95 PB8 GPIO_Output Y_STEPPER_EN
96 PB9 GPIO_Output Z_STEPPER_DIR
97 PE0 GPIO_Output Z_STEPPER_STEP
98 PE1 GPIO_Output Z_STEPPER_EN
SOFTWARE PROJECT
Project Settings :
Project Name : PSE
Project Folder : /home/leo/STM32CubeIDE/workspace_1.13.1/PSE
Toolchain / IDE : STM32CubeIDE
Firmware Package Name and Version : STM32Cube FW_F1 V1.8.5
Code Generation Settings :
STM32Cube MCU packages and embedded software packs : Copy only the necessary library files
Generate peripheral initialization as a pair of '.c/.h' files per peripheral : No
Backup previously generated files when re-generating : No
Delete previously generated files when not re-generated : Yes
Set all free pins as analog (to optimize the power consumption) : No
Toolchains Settings :
Compiler Optimizations :