STM32 19

STM32로 DS1302제어하기(3편)

안녕하세요. 2편에서 단순히 초만 읽었는데, 3편에서는 시간,분,초를 설정하고 시간, 분, 초를 읽어보겠습니다 -읽기 void readTime(uint8_t *time) { //array : 0: seconds, 1: minutes, 2: hours //seconds read HAL_GPIO_WritePin(CE_GPIO_Port, CE_Pin, 1); commandWrite(SCLK_GPIO_Port, SCLK_Pin, I_O_GPIO_Port, I_O_Pin, 0x81); time[0] = commandRead(SCLK_GPIO_Port, SCLK_Pin, I_O_GPIO_Port, I_O_Pin); HAL_GPIO_WritePin(CE_GPIO_Port, CE_Pin, 0); // minutes r..

STM32/활용 2023.01.24

STM32로 DS1302제어하기(2편)

안녕하세요. 오늘은 DS1302에 이전에썻던 1편에 이어서 2편을 쓰겠습니다. 1편에서는 MCU랑 DS1302랑 통신을 하기위한 과정을 적었고 2편에서는 실제로 해보겠습니다 첫 번째로 DS1302로부터 '초'단위만 읽어서 시리얼모니터로 값을 확인해보겠습니다. 사용하는 MCU는 NUCLEO-F103RB 입니다. 먼저 GPIO설정을 해줍니다. DS1302랑 통신하기위해서는 IO포트 3개가 필요합니다. 그 다음에 DS1302를 write/read하기위해서 데이터시트에 나와있는 파형에 맞게 코드를 작성해줍니다 먼저 write 부터 알아보겠습니다 초기상태 CE핀 : LOW SCK핀 : LOW IO핀 : 사용자설정 * Write 1. CE핀 -> HIGH세팅 2. I_O핀 = OUTPUT 설정 3. I_O핀 -> ..

STM32/활용 2023.01.07

STM32로 DS1302제어하기(1편)

안녕하세요. 오늘은 STM MCU로 DS1302를 제어하는 글을 쓰겠습니다. 여기서 STM MCU를 사용하지만 GPIO를 제어해서 통신하므로 STM이나 ATMEGA나 아두이노나 다른 MCU를 사용하던 방식은 모두 같습니다. 그래서 님이 MCU를 STM를 사용하지 않더라도 이 글을 봐도 됩니다. STM MCU는 NUCLEO-F103RB를 사용합니다. DS1302는 2017년도에 아두이노로 제어하는 글을 쓴 적이 있어서 DS1302에 대해서는 이전에 썼던 글을 참고하면 좋습니다. 또한 DS1302보드도 옛날에 사용했던 보드로 사용합니다. https://wowon.tistory.com/92 이제 STM32로 DS1302를 제어해야하므로 데이터시트를 자세히 봐야합니다. 첫 번째로 DS1302로부터 '초'단위만 ..

STM32/활용 2023.01.04

STM32-HAL라이브러리 __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); 알아보기

안녕하세요. 오늘은 STM32의 HAL라이브러리에있는 함수 __HAL_FLASH_PREFETCH_BUFFER_ENABLE();에 대해 알아보겠습니다. - PREFETCH? 일단 알아보기전이 프리패치(PREFETCH)를 알아야 합니다. PREFETCH는 메모리관리 정책으로 로딩할때 빠르게 명령어를 실행하려고 사용합니다. 이 글을 참고하면 좋습니다(https://forum.allaboutcircuits.com/threads/stm32-or-arm-in-general-usage-of-prefetch-buffer.175064/) __HAL_FLASH_PREFETCH_BUFFER_ENABLE();? FLASH PREFETCH BUFFER를 ENABLE하는 함수입니다. 선언은 아래처럼 되어있습니다. #define ..

STM32/STM32 2022.06.10

STM32 프로젝트 생성,빌드하기(STM32CUBEIDE)

안녕하세요 . 오늘은 STM32 프로젝트,빌드를 생성해보겠습니다. 개발환경은 STM32CUBEIDEX를 사용하고 보드는 NUCLEO-F103RB입니다. * 프로젝트만들기 STM32 Project 클릭합니다. 자신의 MCU를 선택합니다. 프로젝트 이름과 경로를 정하고 Finish 합니다. Project Explorer을 보면 만든 프로젝트를 확인할 수 있습니다. *빌드하기 빌드합니다 위의 버튼을 누르면 Build Analyzer가 뜹니다

STM32/STM32 2022.02.26

Nucleo-F103RB Serial통신 (mbed)

안녕하세요. 시리얼 통신으로 PC터미널 프로그램에서 메세지를 교환하며 LED를 ON/OFF해보겠습니다. 1234567891011121314151617181920212223242526272829#include "mbed.h" Serial pc(USBTX,USBRX);DigitalOut myled(PC_9); int main(){ char c; pc.printf("Hello world! \n"); while(1) { c=pc.getc(); if(c=='a') { pc.printf("LED ON\n"); myled.write(1); } if(c=='b') { pc.printf("LED OFF\n"); myled.write(0); } }} Colored by Color Scriptercs Serial pc(US..

STM32/STM32 mbed 2017.09.21

Nucleo-F103RB 버튼사용하기 (mbed)

안녕하세요. Nucleo-F103RB를 이용하여 버튼을 제어해보겠습니다. 12345678910111213141516#include "mbed.h" DigitalOut myled(PC_9);DigitalIn myswitch(PC_13); int main(){ while(1) { if(myswitch.read()) myled.write(1); else myled.write(0); }}cs 12345678910111213141516#include "mbed.h" DigitalOut myled(PC_9);DigitalIn myswitch(PC_13); int main(){ while(1) { if(myswitch.read()) myled.write(1); else myled.write(0); }}cs Digit..

STM32/STM32 mbed 2017.09.09

Nucleo-F103RB LED키기 (mbed)

안녕하세요. 오늘은 LED켜보는 것을 할 것인데요. 매우 쉽습니다. PC9에 LED를 연결하겠습니다. 123456789101112#include "mbed.h" DigitalOut myled(PC_9); int main() { while(1) { myled.write(1); wait(1); myled.write(0); wait(1); }}cs 123456789101112#include "mbed.h" DigitalOut myled(PC_9); int main() { while(1) { myled.write(1); wait(1); myled.write(0); wait(1); }}cs DigitalOut(PinName pin)mbed에서 핀 이름으로는 PA_0, PA_1이런식으로 정의되어 있습니다.PinNa..

STM32/STM32 mbed 2017.09.09

NUCLEO-F103RB 개발환경 만들기(mbed)

STM32F103RB(NUCLEO-F103RB) 개발환경 구축하기 안녕하세요. STM32에 대해 알아볼건데요. 먼저 AVR대신 STM을 사용하는 이유는 AVR보다 STM이 훨씬 빠르고 싸기 때문입니다. 사용할 보드는 STM32F103RB(NUCLEO-F103RB)입니다. 이 보드를 택한 이유는 인터넷에 이 보드에 대한 자료가 많고, mbed(개발환경)가 지원되기 때문입니다. mbed는 온라인 프로그래밍 개발 툴 입니다. mbed는 다른 툴 보다 사용하기가 매우 쉽습니다.NUCLEO-F103RB 이 보드는 ST-LINK가 내장되어 있어서 별도의 장비가 필요 없고, usb케이블로 프로그래밍을 할 수 있습니다. MBED사용하기 사용할 툴은 mbed입니다. 아래의 사이트에가서 가입하시구요 로그인하세요https:..

STM32/STM32 mbed 2017.08.23