초보의 아웅다웅 설계하기/STM32 94

STM32F Sleep Mode에서 Uart로 Wakeup하기

STM32F091 기준으로 하였습니다.다른 시리즈와는 라이브러리가 달라 변경이 필요합니다. main.c 파일에서 int main(void){ HAL_Init(); /* Configure the system clock to 48 MHz */ SystemClock_Config(); /* Configure LED2 */ BSP_LED_Init(LED2); /*##-1- Configure the UART peripheral ######################################*/ /* Put the USART peripheral in the Asynchronous mode (UART Mode) */ /* UART configured as follows: - Word Length = 8 Bits ..

SoftUart Only TX

참고 사이트 : https://github.com/blalor/avr-softuart 위 사이트에 나와있는 소스코드를 STM32F103에서 동작하도록 변경9600bps에 맞췄습니다만 본인이 사용하는 클럭 설정이나 다른 코어라면 코어의 처리 속도등을 고려해서 Timer의 발생 시간을 조절해주어야 합니다. 계산해보면 1/9600 = 0.00010416... 이므로 오차율 감안하고 104us정도 나오도록 오실로스코프로 계산하면서 맞춰주면 될 것 같습니다. ##include #include #define SU_TRUE 1#define SU_FALSE 0 // 1 Startbit, 8 Databits, 1 Stopbit = 10 Bits/Frame#define TX_NUM_OF_BITS (10)volatile s..

OLED QG-2864KSWLG01 내부 펌프 초기 코드

OLED QG-2864KSWLG01를 구해서 프로그램을 넣었습니다.웹에 도는 소스코드와 데이터시트로 구현을 하여도 동작을 하지 않았습니다.명령어를 넣을 때 데이터 시트와 웹에서는 0x80을 실제로는 0x00을 넣어야했습니다.그리고 ACK 자리에도 데이터 시트와 웹에서는 1을 실제로는 0을 넣어야 했습니다.아래 샘플코드입니다.I2C가 패리패럴로 구현되지 않고 IO로 구현되어있습니다.RES는 회로상에서 NPN TR로 ON/OFF 해서 High와 Low가 역으로 되어있습니다. #define OLED_ADDRESS 0x78 #define I2C_PORTGPIOB#define I2C_SCLGPIO_Pin_6 #define I2C_SDAGPIO_Pin_7 #define LCDRSTPORTGPIOE#define LC..

Partial Erase Done (areas with no algorithms skipped!) 에러 발생

Keil 컴파일러를 사용하여 다운로드할 때 발생하는 에러 처리 방법 다운로드할 칩의 메모리 사이즈가 맞지 않을 경우 발생 Load "STM32F401xx\\STM32F401xx.axf" No Algorithm found for: 0806E000H - 0806FFFFHNo Algorithm found for: 08070000H - 0807FFF3HPartial Erase Done (areas with no algorithms skipped!)No Algorithm found for: 0806E000H - 0806FFFFHNo Algorithm found for: 08070000H - 0807FFF3HPartial Programming Done (areas with no algorithms skipped!)..

Keil, IAR고정위치에 바이너리 라이팅하기

Keil에서 고정 위치에 바이너리 라이팅하기 const unsigned char FixedROM[65520UL + 1] __attribute__((at(0x08010000))) = {0x00, };  IAR에서 고정위치에 바이너리 라이팅하기#pragma location = 0x08010000__root const unsigned char FixedROM[65520UL + 1] = {0x00, };  0x08010000는 위치하고 싶은 주소   Bin2C 코드 :       코드 출처 : https://www.dotnetnote.com/docs/c-language/get-file-size-in-c/ 파일 크기 확인하는 C 프로그램 예제파일 크기 확인하는 C 프로그램 예제 이번 아티클에서는 C 언어를 사용하..

Tamper 사용

내부 백업레지스터의 정보를 제거하는 용도로 사용하는 TAMPER 패리패럴을 설정하고 사용하는 방법입니다.주요 정보를 저장해두고 유사시에 제거하는 용도로 사용하도록 설정하여 사용하면 될 것 같습니다.TAMPER 핀은 PULL-DOWN해두고 유사시에 TAMPER 핀에 HIGH 신호를 주는 설정으로 하였습니다. 전원 OFF 시에 전원이 TAMPER 핀으로 들어가지 않게 하기 위함이었습니다. /******************************************************************************** Function Name : * Parameters : * Return : none* Description : *************************************..

다중 이동식 저장장치

사용 MCU : STM32F103Zx사용한 MassStorage 타입 : SD, NandFlash, InterFlash mass_mal.c에서 수정 #include "stm32f10x.h"#include "stdio.h"#include "bsp_sdio_sd.h"#include "usr_nand.h"#include "mass_mal.h" #include "usr_led.h"#include "usr_uart.h" //#define MASSPRINT DEBUGPRINT#define MASSPRINT(...) typedef enum _MASS_ID{MASS_SD = 0,MASS_NAND = 1,MASS_INTERNNAL = 2,}MASS_ID_E; #define MAL_OK 0#define MAL_FAIL 1..