design first screen

main
dplimin 2023-09-26 16:36:13 +03:00
parent 7683663759
commit 2ac0af3fea
9 changed files with 371 additions and 46 deletions

View File

@ -4,7 +4,7 @@
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="com.atollic.truestudio.mbs.GCCSpecsDetectorAtollicArm" console="false" env-hash="-1375347280474830385" id="com.atollic.truestudio.mbs.provider" keep-relative-paths="false" name="Atollic ARM Tools Language Settings" parameter="${COMMAND} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="com.atollic.truestudio.mbs.GCCSpecsDetectorAtollicArm" console="false" env-hash="1761414022695062209" id="com.atollic.truestudio.mbs.provider" keep-relative-paths="false" name="Atollic ARM Tools Language Settings" parameter="${COMMAND} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
@ -14,7 +14,7 @@
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="com.atollic.truestudio.mbs.GCCSpecsDetectorAtollicArm" console="false" env-hash="-1375347280474830385" id="com.atollic.truestudio.mbs.provider" keep-relative-paths="false" name="Atollic ARM Tools Language Settings" parameter="${COMMAND} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="com.atollic.truestudio.mbs.GCCSpecsDetectorAtollicArm" console="false" env-hash="1761414022695062209" id="com.atollic.truestudio.mbs.provider" keep-relative-paths="false" name="Atollic ARM Tools Language Settings" parameter="${COMMAND} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>

View File

@ -4,28 +4,39 @@
<stringAttribute key="com.atollic.hardwaredebug.jlink_common.device" value="STM32F446RE"/>
<stringAttribute key="com.atollic.hardwaredebug.jlink_common.endian" value="little"/>
<stringAttribute key="com.atollic.hardwaredebug.jlink_common.init_speed" value="4000"/>
<booleanAttribute key="com.atollic.hardwaredebug.jlink_common.jlink_check_serial_number" value="true"/>
<stringAttribute key="com.atollic.hardwaredebug.jlink_common.jlink_script_path" value=""/>
<booleanAttribute key="com.atollic.hardwaredebug.jlink_common.jlink_script_used" value="false"/>
<stringAttribute key="com.atollic.hardwaredebug.jlink_common.jlink_txt_serial_number" value="51006446"/>
<booleanAttribute key="com.atollic.hardwaredebug.jlink_common.scan_chain_auto" value="true"/>
<intAttribute key="com.atollic.hardwaredebug.jlink_common.scan_chain_irpre" value="0"/>
<intAttribute key="com.atollic.hardwaredebug.jlink_common.scan_chain_pos" value="0"/>
<stringAttribute key="com.atollic.hardwaredebug.jlink_common.selected_rtos" value="No RTOS"/>
<stringAttribute key="com.atollic.hardwaredebug.launch.analyzeCommands" value="# Set flash parallelism mode to 32, 16, or 8 bit when using STM32 F2/F4 microcontrollers&#13;&#10;# 2=32 bit, 1=16 bit and 0=8 bit parallelism mode&#13;&#10;monitor flash set_parallelism_mode 2&#13;&#10;&#13;&#10;# Load the program executable&#13;&#10;load&#9;&#9;&#13;&#10;&#13;&#10;# Enable Debug connection in low power modes (DBGMCU-&gt;CR)&#13;&#10;set *0xE0042004 = (*0xE0042004) | 0x7&#13;&#10;# Start the executable&#13;&#10;continue"/>
<booleanAttribute key="com.atollic.hardwaredebug.launch.enable_swv" value="false"/>
<intAttribute key="com.atollic.hardwaredebug.launch.formatVersion" value="2"/>
<stringAttribute key="com.atollic.hardwaredebug.launch.hwinitCommands" value="# Initialize your hardware here&#10;"/>
<stringAttribute key="com.atollic.hardwaredebug.launch.ipAddress" value="localhost"/>
<stringAttribute key="com.atollic.hardwaredebug.launch.jtagDevice" value="ST-LINK"/>
<intAttribute key="com.atollic.hardwaredebug.launch.portNumber" value="61234"/>
<stringAttribute key="com.atollic.hardwaredebug.launch.remoteCommand" value="target extended-remote"/>
<stringAttribute key="com.atollic.hardwaredebug.launch.runCommands" value="# Set flash parallelism mode to 32, 16, or 8 bit when using STM32 F2/F4 microcontrollers&#13;&#10;# 2=32 bit, 1=16 bit and 0=8 bit parallelism mode&#13;&#10;monitor flash set_parallelism_mode 2&#13;&#10;&#13;&#10;# Load the program executable&#13;&#10;load&#9;&#9;&#13;&#10;&#13;&#10;# Enable Debug connection in low power modes (DBGMCU-&gt;CR)&#13;&#10;set *0xE0042004 = (*0xE0042004) | 0x7&#13;&#10;# Set a breakpoint at main().&#13;&#10;tbreak main&#13;&#10;&#13;&#10;# Run to the breakpoint.&#13;&#10;continue"/>
<stringAttribute key="com.atollic.hardwaredebug.launch.serverParam" value="-p 61234 -l 1 -d"/>
<stringAttribute key="com.atollic.hardwaredebug.launch.runCommands" value="# Set flash parallelism mode to 32, 16, or 8 bit when using STM32 F2/F4 microcontrollers&#10;# Uncomment next line, 2=32 bit, 1=16 bit and 0=8 bit parallelism mode&#10;#monitor flash set_parallelism_mode 2&#10;&#10;# Set character encoding&#10;set host-charset CP1252&#10;set target-charset CP1252&#10;&#10;# Reset to known state&#10;monitor reset&#10;&#10;# Load the program executable&#10;load&#9;&#9;&#10;&#10;# Reset the chip to get to a known state. Remove &quot;monitor reset&quot; command &#10;# if the code is not located at default address and does not run by reset. &#10;monitor reset&#10;&#10;# Enable Debug connection in low power modes (DBGMCU-&gt;CR)&#10;set *0xE0042004 = (*0xE0042004) | 0x7&#10;# Set a breakpoint at main().&#10;tbreak main&#10;&#10;# Run to the breakpoint.&#10;continue"/>
<stringAttribute key="com.atollic.hardwaredebug.launch.serverParam" value="-p 61234 -l 1 -d -s -i 0666FF525171494867103125 -cp &quot;C:\Program Files (x86)\Atollic\TrueSTUDIO for STM32 9.1.0\Servers\STM32CubeProgrammer\bin&quot;"/>
<booleanAttribute key="com.atollic.hardwaredebug.launch.startServer" value="true"/>
<booleanAttribute key="com.atollic.hardwaredebug.launch.swd_mode" value="true"/>
<stringAttribute key="com.atollic.hardwaredebug.launch.swv_port" value="61235"/>
<stringAttribute key="com.atollic.hardwaredebug.launch.swv_trace_div" value="120"/>
<stringAttribute key="com.atollic.hardwaredebug.launch.swv_trace_hclk" value="120000000"/>
<stringAttribute key="com.atollic.hardwaredebug.launch.swv_trace_div" value="8"/>
<stringAttribute key="com.atollic.hardwaredebug.launch.swv_trace_hclk" value="8000000"/>
<booleanAttribute key="com.atollic.hardwaredebug.launch.swv_wait_for_sync" value="true"/>
<intAttribute key="com.atollic.hardwaredebug.launch.trace_system" value="0"/>
<booleanAttribute key="com.atollic.hardwaredebug.launch.useRemoteTarget" value="true"/>
<stringAttribute key="com.atollic.hardwaredebug.launch.verifyCommands" value="# Set flash parallelism mode to 32, 16, or 8 bit when using STM32 F2/F4 microcontrollers&#13;&#10;# 2=32 bit, 1=16 bit and 0=8 bit parallelism mode&#13;&#10;monitor flash set_parallelism_mode 2&#13;&#10;&#13;&#10;# Load the program executable&#13;&#10;load&#9;&#9;&#13;&#10;&#13;&#10;# Enable Debug connection in low power modes (DBGMCU-&gt;CR)&#13;&#10;set *0xE0042004 = (*0xE0042004) | 0x7&#13;&#10;# The executable starts automatically"/>
<booleanAttribute key="com.atollic.hardwaredebug.launch.verify_flash_download" value="true"/>
<booleanAttribute key="com.atollic.hardwaredebug.stlink.enable_external_loader" value="false"/>
<booleanAttribute key="com.atollic.hardwaredebug.stlink.enable_logging" value="false"/>
<stringAttribute key="com.atollic.hardwaredebug.stlink.log_file" value="D:/My Work/A1210/\Debug\st-link_gdbserver_log.txt"/>
<stringAttribute key="com.atollic.hardwaredebug.stlink.external_loader" value=""/>
<stringAttribute key="com.atollic.hardwaredebug.stlink.log_file" value="C:\Users\Limin\Desktop\A1210\Debug\st-link_gdbserver_log.txt"/>
<booleanAttribute key="com.atollic.hardwaredebug.stlink.stlink_check_serial_number" value="true"/>
<stringAttribute key="com.atollic.hardwaredebug.stlink.stlink_txt_serial_number" value="0666FF525171494867103125"/>
<booleanAttribute key="com.atollic.hardwaredebug.stlink.verify_flash" value="false"/>
<stringAttribute key="org.eclipse.cdt.debug.mi.core.DEBUG_NAME" value="${TOOLCHAIN_PATH}/arm-atollic-eabi-gdb"/>
<stringAttribute key="org.eclipse.cdt.debug.mi.core.commandFactory" value="Standard (Windows)"/>
@ -33,8 +44,10 @@
<booleanAttribute key="org.eclipse.cdt.debug.mi.core.verboseMode" value="false"/>
<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="${TOOLCHAIN_PATH}/arm-atollic-eabi-gdb"/>
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="Debug/A1210.elf"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="A1210"/>
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value=""/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/A1210"/>

View File

@ -64,7 +64,7 @@ void Error_Handler(void);
#define STD_GPIO_Port GPIOC
#define SCK_Pin GPIO_PIN_2
#define SCK_GPIO_Port GPIOC
#define ON_Pin GPIO_PIN_3
#define ON_Pin GPIO_PIN_4 //Áûë3
#define ON_GPIO_Port GPIOC
#define OFF_Pin GPIO_PIN_2
#define OFF_GPIO_Port GPIOA
@ -106,6 +106,8 @@ void Error_Handler(void);
/* USER CODE END Private defines */
#ifdef __cplusplus
}
#endif

View File

@ -22,11 +22,11 @@
#include "string.h"
#define LOGO_TIME_MS (3000u)
#define LOGO_TIME_MS (500u)
#define lo(x) ((uint8_t) ((x) & 0xFF))
#define hi(x) ((uint8_t) (((x) >> 8) & 0xFF))
#define ABS(x) (((x) < 0)?-(x) :(x))

View File

@ -10,12 +10,12 @@
// Choose a microcontroller family
//#define STM32F0
//#define STM32F1
//#define STM32F4
#define STM32F4
//#define STM32L0
//#define STM32L4
//#define STM32F3
//#define STM32H7
#define STM32F7
//#define STM32F7
// Choose a bus
//#define SSD1306_USE_I2C
@ -26,14 +26,14 @@
//#define SSD1306_I2C_ADDR (0x3C << 1)
// SPI Configuration
#define SSD1306_SPI_PORT hspi2
#define SSD1306_SPI_PORT hspi1
#define SSD1306_CS_Port GPIOC
#define SSD1306_CS_Pin GPIO_PIN_7
#define SSD1306_DC_Port GPIOC
#define SSD1306_DC_Pin GPIO_PIN_2
#define SSD1306_Reset_Port GPIOC
#define SSD1306_Reset_Pin GPIO_PIN_8
#define SSD1306_CS_Port GPIOA
#define SSD1306_CS_Pin GPIO_PIN_8
#define SSD1306_DC_Port GPIOA
#define SSD1306_DC_Pin GPIO_PIN_6
#define SSD1306_Reset_Port GPIOA
#define SSD1306_Reset_Pin GPIO_PIN_12
// Mirror the screen if needed
// #define SSD1306_MIRROR_VERT

View File

@ -25,33 +25,25 @@
#include "tim.h"
#include "usart.h"
#include "gpio.h"
#include "OLED_Fonts.h"
#include "string.h"
#include <math.h>
#include <stdbool.h>
#include <stdlib.h>
#include "my.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "ssd1306.h"
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */
__IO uint16_t repeat = 0;
volatile int needRefresh; ///
/* USER CODE END PTD */
typedef enum
{
CURSOR = Black,
TEXT = White
}typeTEXT;
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */
/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
/* USER CODE END PM */
/* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN PV */
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP */
@ -66,11 +58,266 @@ void SystemClock_Config(void);
* @brief The application entry point.
* @retval int
*/
//0,2; 1; 2; 10 ôâ÷
//0,1; 0,3; 1; 3; 10; 30; 100 ôí÷
typedef struct {
int kPr;
int kExit;
int FVCH;
int FNCH;
} set_type;
char pString[16] = {0};
char* FloatToASCII(float Val, int32_t RoundTo)
{
uint8_t idx = 0;
int32_t i;
float value, F, I;
uint32_t rnd = 0;
uint32_t Tmp32 = 0;
uint32_t Int32 = 0;
uint32_t Frac32 = 0;
uint32_t _I32 = 0;
uint32_t _F32 = 0;
uint32_t d = 0, dd = 0;
char tmparray[32];
volatile bool minus = false;
memset(tmparray, 0, 32);
memset(pString, 0, 16);
value = Val;
if(value < 0)
minus = true;
if((Val >= 10000.00000f)/* || (Val <= 0)*/)
{
if(Val <= 0)
{
pString[0] = '0';
pString[1] = '~';
pString[2] = '0';
pString[3] = '\0';
}
else
{
pString[0] = '1';
pString[1] = '0';
pString[2] = '0';
pString[3] = '0';
pString[4] = '0';
pString[5] = '\0';
}
return pString;
}
value = ABS(Val);
rnd = ABS(RoundTo);
if(RoundTo < 0)
{
F = modff(value, &I);
while(rnd)
{
F *= 10.0f;
rnd--;
d++;
}
F = roundf(F);
dd = 1;
for(i = 0; i < d; i++)
dd *= 10;
if((uint32_t) F == dd)
{
F = 0;
I += 1;
}
}
else
{
I = roundf(value);
F = 0.0f;
}
Int32 = (uint32_t) I;
Frac32 = (uint32_t) F;
_I32 = Int32;
_F32 = Frac32;
idx = 0;
tmparray[idx++] = '\0';
if((Int32 == 0) && (Frac32 == 0))
{
if(RoundTo < 0)
{
for(i = 0; i < abs(RoundTo); i++)
tmparray[idx++] = '0';
tmparray[idx++] = '~';
}
tmparray[idx++] = '0';
}
else
{
if(RoundTo < 0)
{
for(i = 0; i < abs(RoundTo); i++)
{
Tmp32 = Frac32;
Frac32 /= 10;
Tmp32 = Tmp32 - Frac32 * 10;
tmparray[idx++] = '0' + Tmp32;
}
tmparray[idx++] = '~';
}
if(Int32 != 0)
{
while(Int32)
{
Tmp32 = Int32;
Int32 /= 10;
Tmp32 = Tmp32 - Int32 * 10;
tmparray[idx++] = '0' + Tmp32;
}
}
else
tmparray[idx++] = '0';
if(minus)
{
if((_I32 != 0) || (_F32 != 0))
tmparray[idx++] = '-';
}
}
for(i = 0; i < idx; i++)
pString[i] = tmparray[idx - i - 1];
return pString;
}
uint16_t readkey(void)
{
uint16_t key = 0;
if(HAL_GPIO_ReadPin(OK_BTN_GPIO_Port, OK_BTN_Pin) == GPIO_PIN_RESET)
key |= OK_BTN_Pin;
if(HAL_GPIO_ReadPin(UP_BTN_GPIO_Port, UP_BTN_Pin) == GPIO_PIN_RESET)
key |= UP_BTN_Pin;
if(HAL_GPIO_ReadPin(DN_BTN_GPIO_Port, DN_BTN_Pin) == GPIO_PIN_RESET)
key |= DN_BTN_Pin;
if(HAL_GPIO_ReadPin(ON_GPIO_Port, ON_Pin) == GPIO_PIN_RESET)
key |= ON_Pin;
return key;
}
uint16_t kbhit(void)
{
volatile uint16_t key;
static uint32_t dreb = 0; //äðåáåçã
static uint8_t first = 1; //ïðèçíàê ïåðâîãî ìîìåíòà íàæàòèÿ êíîïêè
static uint16_t rep = 50;
do
{
key = readkey();
if(!key)
{
if(dreb)
dreb--;
else first = 1;
}
else
{
if(dreb < 3)
dreb++;
}
}
while((dreb > 0) && (dreb < 3));
if(!key) //åñëè êíîïêè îòïóùåíû
{
first = 1; //äîñòîâåðíî êíîïêè îòïóùåíû
return 0; //âåðíóòü 0
}
else //èíà÷å
{
if(first) //îïðåäåëèòü êíîïêó
{ //òîëüêî îäèí ðàç
first = 0; //çà íàæàòèå
repeat = rep = 32;
return key; //âåðíóòü â ãëàâíóþ ôóíêöèþ ñîñòîÿíèå êëàâèàòóðû
}
else
{
if(repeat)
return 0; //èìèòàöèÿ ñâîáîäíîé êëàâèàòóðû
else
{
if(rep > 0)
rep >>= 1;
else rep = 32;
repeat = rep;
// if(key == KEY_RESET_Pin)
// return 0;
return key;
}
}
}
}
const float exitVar[] = {0.1, 0,2, 0,5, 1, 2, 5, 10, 20, 50, 100, 200, 500};
const float fvchVar[] = {0.2, 1, 2, 10};
const float fnchVar[] = {0.1, 0.3, 1, 3, 10, 30, 100};
const char string11[] = "Rgh";
const char string12[] = "gRk/vc2";
const char string21[] = "Ds[jl";
const char string22[] = "vD/vc2";
const char string31[] = "ADX";
const char string32[] = "Uw";
const char string41[] = "AYX";
const char string42[] = "rUw";
const char string51[] = "Gthtuheprf!!!";
int main(void)
{
set_type set;
set.kPr = 22222;
set.kExit =22222;
set.FVCH=22222;
set.FNCH=22222;
HAL_Init();
SystemClock_Config();
MX_FLASH_Init();
MX_GPIO_Init();
MX_DMA_Init();
@ -80,9 +327,56 @@ int main(void)
MX_TIM7_Init();
MX_USART1_UART_Init();
/////Ìîé êîä çäåñü
ssd1306_Init();
DrawLogo();
HAL_Delay(100);
ssd1306_Fill(Black);
ssd1306_UpdateScreen();
ssd1306_SetCursor(0, 7);
while (1)
{
FontSet(Segoe_UI_Rus_8);
OLED_DrawStr(string11, 1, 10, TEXT);
OLED_DrawStr(FloatToASCII(2.45f, -3), 40, 10, TEXT);
// OLED_DrawStr(FloatToASCII(2.45f, 0), 40, 10, TEXT);
// OLED_DrawNum(set.kPr, 40, 10, TEXT);
OLED_DrawStr(string12, 80, 10, TEXT);
////////////////////////////
OLED_DrawStr(string21, 1, 20, TEXT);
OLED_DrawNum(set.kExit, 40, 20, CURSOR);
OLED_DrawStr(string22, 80, 20, TEXT);
////////////////////////////
OLED_DrawStr(string31, 2, 30, TEXT);
OLED_DrawNum(set.FVCH, 40, 30, TEXT);
OLED_DrawStr(string32, 80, 30, TEXT);
//////////////
OLED_DrawStr(string41, 2, 40, TEXT);
OLED_DrawNum(set.FNCH, 40, 40, TEXT);
OLED_DrawStr(string42, 80, 40, TEXT);
//////////////
OLED_DrawStr(string51, 30, 50, TEXT);
//OLED_DrawChar("n", 4, 4, TEXT);
//if(readkey()==OK_BTN_Pin) OLED_DrawStr("jr", 255, 8, White);
//if(readkey()==DN_BTN_Pin) OLED_DrawStr("dybp", 255, 20, White);
//if(readkey()==UP_BTN_Pin) OLED_DrawStr("ddth[", 255, 32, White);
//if(readkey()==ON_Pin) OLED_DrawStr("drk", 255, 44, White);
//HAL_Delay(300);
// ssd1306_Fill(Black);
//; //
//OLED_DrawStr("Ds[jl", 255, 20, White); //
//OLED_DrawStr("adx", 255, 32, White); // Modbus
//OLED_DrawStr("ayx", 255, 44, White);
needRefresh=1;
}
}

View File

@ -77,13 +77,19 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)
PA6 ------> SPI1_MISO
PA7 ------> SPI1_MOSI
*/
GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7;
GPIO_InitStruct.Pin = GPIO_PIN_5|/*GPIO_PIN_6|*/GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_6;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/* USER CODE BEGIN SPI1_MspInit 1 */
/* USER CODE END SPI1_MspInit 1 */

View File

@ -8,7 +8,7 @@
extern __IO bool por;
extern __IO bool clbr;
extern const char SERIAL[];
const char SERIAL[] ={'0','2','3'};
extern __IO UserData_TypeDef pardata, pardata_old;
__IO uint8_t DMA_Ready = 0;

View File

@ -22,6 +22,8 @@
/* USER CODE BEGIN 0 */
extern int needRefresh;
/* USER CODE END 0 */
TIM_HandleTypeDef htim3;
@ -96,7 +98,7 @@ void MX_TIM7_Init(void)
Error_Handler();
}
/* USER CODE BEGIN TIM7_Init 2 */
HAL_TIM_Base_Start_IT(&htim7);
/* USER CODE END TIM7_Init 2 */
}
@ -163,6 +165,14 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle)
}
/* USER CODE BEGIN 1 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(needRefresh==1) {//ssd1306_Fill(0x00);
ssd1306_UpdateScreen();
needRefresh=0;
}
}
/* USER CODE END 1 */