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

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 처리하는 게 원하는 대로 되지 않아 불편했었는데 다행이었습니다.) /*********************************..

HAL_UART_Receive_IT 사용하지 않기

ST에서 기존 드라이버들에서 Hal 드라이버로 변경한 후 UART 데이터 수신 후 문제가 많았습니다. 물론 틀에 박혀서 사용해야한다는 고정관념 때문이었습니다. 그러다 어떤 분이 올려놓으신 글(당근이)과 아래 사이트를 보면서 아! 꼭 제시해준 방법을 쓰지 않아도 되는구나 기존처럼 사용해도 되는 구나! 하는 것을 알게 되었습니다. (세상에는 똑똑하신 분들이 많네요. 고정관념 진짜 ㅠㅠ) https://www.basic4mcu.com/bbs/board.php?bo_table=d1&wr_id=40&page=3 Uart 설정 char Uart1RxData; /* USART1 */ Uart1Handle.Instance = USART1; Uart1Handle.Init.BaudRate = 115200;//Baud Ra..

IAR에서 Stack 할당 계산

IAR에서 Stack 할당 계산 IAR에서 Map File이 생성되도록 설정하고 Stack 분석을 체크한 후 컴파일을 하면 Stack에 사용되는 용량이 나오고 총 용량의 합보다 더 큰 용량을 Stack에서 설정을 하면 됩니다. 동적 라이브러리로 생성하는 경우 동적라이브러리에 Stack 사이즈를 설정하지 않아도 되고 라이브러리를 불러 사용하는 프로그램에서 최소한 같은 용량이나 그 이상의 용량을 설정해주어야 인터럽트 발생시에 문제가 생기지 않는 듯 싶습니다. Keil과 IAR을 컴파일 후 서로 결과가 달라 양쪽을 모두 사용하기 위해서는 양쪽 모두 확인해 주어야 합니다.(IAR에서 된다고 Keil에서 되는 것도 아니고 Keil에서 된다고 IAR에서 되는 것도 아니라서 확인 하지 않았다가 낭패를 볼 수 있습니다..

ST Micro JTAG 단자를 IO로 사용하기

이 칩 저 칩을 쓰다보니 헷갈리네요. IO가 부족하여 Jtag 단자를 사용하려고 아무리 설정을 하여도 동작이 되지 않아 헤매다가 찾았습니다. 몇년전에 할 때도 이 문제가 있었던 것 같은데 몇년에 한번씩 사용하다보니 기억도 나지 않아 한참 헤맸습니다. .... #define GPIO_Remap_SWJ_NoJTRST ((uint32_t)0x00300100) /*!< Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST */#define GPIO_Remap_SWJ_JTAGDisable ((uint32_t)0x00300200) /*!< JTAG-DP Disabled and SW-DP Enabled */#define GPIO_Remap_SWJ_Disable ((uint32..

One Elf Section per Function 옵션???

ST에서 Cypress에서처럼 emwin의 그래픽쪽 라이센스를 구매하였는지 예제 파일이 들어 있어서 카메라에서 이미지를 받아 그 이미지를 그래픽에 뿌려보려고 테스트를 하였습니다. 정상적으로 동작하지 않아 JPEG이미지를 가져와 코드에 넣고 확인하려했으나 이미지가 계속 나오지 않았습니다. 무엇때문일까? 왜 일까? 고심하다 one elf section per function 옵션을 제거해 보았습니다. 그랬더니 이미지가 똭!!!!! 그간 아무 생각없이 항상 체크해두던 옵션이 이럴 수가... 잡다한 인생님 홈페이지(http://electro-don.tistory.com/60)나 Keil 공식 사이트(http://www.keil.com/support/docs/3738.htm)에서의 설명으로는 라이브러리에서 사용하..