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

USB Composite

ConfigDescriptor의 설정과 다른 Endpoint에서 값을 가져오는 경우를 주의하여야 할 것 같습니다. 빠르게 짜려고 긁어오다가 주로 실수하는 부분이라서... USB Composite 드라이버를 올려야 해서 Endpoint를 더 가져올 경우 /*-----------------------------------------------------------*/usb_conf.h에서 사용할 Endpoint In/Out EPx_xxx_Callback 함수 주석처리Endpoint ADDR을 추가 #define BTABLE_ADDRESS (0x00) /* EP0 *//* rx/tx buffer base address */#define ENDP0_RXADDR (0x18)#define ENDP0_TXADDR (..

error C1189: #error : MFC does not support WINVER less than 0x0501.

Custom_HID PC 프로그램 예제에서 에러문제 error C1189: #error : MFC does not support WINVER less than 0x0501. Please change the definition of WINVER in your project properties or precompiled header. c:\program files (x86)\microsoft visual studio 12.0\vc\atlmfc\include\afxv_w32.h 40 1 UsbHidDemonstrator USB HID Demonstrator\src\StdAfx.h 에서 아래의 부분을 수정하여야 합니다. #define WINVER 0x0500=> 수정#define WINVER 0x0A00 참고 ..

Buzzer Melody

Buzzer Melody 예제입니다.멜로디를 위한 테스트 예제로 참고만 하면 될 것 같습니다. void TIM2_Configuration(void){TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure; /* TIM2 clock enable */RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); /* Time base configuration */TIM_TimeBaseStructure.TIM_Period = 10; // Overflow Interrupt On 10 usec 타이머주기TIM_TimeBaseStructure.TIM_Prescaler = 35; // Timer..

STM32L432 Read Protection 버그인가?

STM32L432가 저가의 제품이라 사용하려고 하고 있습니다. 그런데 Read Protect 기능을 사용하면 기존에 라이팅 되어 있는 프로그램이 다 사라집니다. 당황스럽네요. STM32F1XX 제품군에서 확인하면 괜찮은데 이 제품에서만 그러네요.(사라진게 아니라 동작을 안한거였슴니다) 놀랍습니다.어제 질문글을 올렸는데 오늘 답변이 왔네요.니가 무슨말 하는지 모르겠다라구요.. ㅠㅠ제 영어실력이 딸려서 ㅠㅠ어제까지만 해도 비관적 안티였었는데 하루만에 ST 찬양합니다.그 후에 20분 간격으로 답변을 주고 받을 수 있었습니다.채팅하는 줄.... Dear customer, In relation to the read out protection in the reference manual of STM32L432KC, ..

STM32L4xx에서 Brownout, ReadOut Protection 설정

#define USRCONFIGMASK 0xFFFFF8FF#define BORLEVELMASK 0x00000700 #define BORLEVEL OB_BOR_LEVEL_1#define BOR_FLAG_TIMEOUT 1000 #define RDPLEVEL OB_RDP_LEVEL_1 /******************************************************************************** Function Name : * Parameters : None* Return : None* Description : *******************************************************************************/void Config_B..

STM32L4 ADC Low Layer Driver

Low Layer Driver을 사용한 ADC 들어오는 ADC 값의 움직임을 크게 주기 위해 샘플링 주기를 짧게 가져왔습니다.(LL_ADC_SAMPLINGTIME_2CYCLES_5) int main(void) { uint32_t nBuf[128]; uint8_t i; /* Configure the system clock to 80 MHz */ SystemClock_LLConfig(); /* ADC Configuration */ ADC_Configuration(); while(1){ GetADC1(chBuf); for(i = 0; i< 11; i++){ UART1_printf("ADC0 =%02X \r\n", chBuf[i]); } } } #include "math.h" #include "usr_adc.h..

WWDG에서 Watchdog 발생시 클리어 처리

WWDG에서 Watchdog 발생시 클리어 처리 WWDG 사용중에 특정 목적에서는 WWDG가 동작하지 않아야하는데 이런 목적으로 사용할 경우 인터럽트에서 클리어 처리 해주어야 합니다. WWDG나 IWDG는 동작하도록 한번 설정을 하면 플래그에 다시 사용히자 않도록 설정을 하여도 되지 않습니다. 이럴 때를 위해서 인터럽트과 인터럽트가 아닌 곳에서 처리하도록 양쪽에 처리를 하였습니다. (STM32L432에서 구현된 부분) 메인 .c tFunc_Typedef Func_Operate[] = { /* Random Source */ // {GenRandom, "GetADC", 0}, /* UART */ {GetuPacket, "GetUartPacket", 0}, /* SPI */ {GetsPacket, "GetSP..

ST에서 지원하는 Low Layer 드라이버

ST에서 이제 Stdlib를 지원하지 않고 Hal만 지원하여 답답했었는데 보다보니 Hal 드라이버만이 아닌 LL Driver을 지원했습니다. Drivers\STM32L1xx_HAL_Driver\Src 폴더에 보면 stm32fxxx_hal로 시작하는 것말고 stm32fxxx_ll로 시작하는 것들이 있는데 이게 Low Layer Driver이었습니다. 처음에 드라이버 추가할 때 뭘까 했었는데 이게 Low Layer였다니... 기존에 Stdlib를 썼거나 hal이 뜻하는대로 되지 않아 불편한 사람들에게는 정말 좋은 것 같습니다. (다른 건 몰라도 SPI나 UART등등 통신으로 Hal 처리하는 게 원하는 대로 되지 않아 불편했었는데 다행이었습니다.) /*********************************..