Embedded System/STM32 7

[Cortex-M4] SW4STM32 STM32CubeMX 프로젝트 생성

프로젝트를 설정해보자. 이전글(클릭)에서는 개발환경을 구축했었다. 이제 STM32CubeMX를 이용하여 프로젝트를 생성해보자. 일단 나는 STM32F4 discovery보드를 사용하였다. 칩은 STM32F407이다. 먼저 SW4STM32를 실행하고 STM32CubeMX를 켠다. 다음으로 New Project를 눌러 진행한다. New Project를 클릭하면 아래와 같이 MCU를 선택하는 창이 뜨는데 본인이 사용하는 MCU를 고르고 하단의 OK를 누른다. OK를 누르면 아래와 같은 화면이 나온다. 이제 클럭 설정을 해주어야 하기때문에 왼쪽 목록중에 RCC를 선택한다. 나는 16MHz짜리 외부 크리스탈이 부착되어있기 때문에 High Speed Clock(HSE)를 Crystal/Ceramic ...으로 바꿔..

[Cortex-M4] SW4STM32 개발환경 구축

ST사의 STM32 시리즈 중에 Cortex-M4로 개발하기 위하여 개발환경을 구축하고자 한다. 이전에 M3를 개발할 때 uVision4를 사용했었는데 무료버전을 사용하다 보니 용량제한이 걸려서 개발환경을 바꾸었다. 완전 무료인 SW4STM32로... 그리고 이클립스 기반으로 만들어져서 나는 마음에 든다! SW4STM32는 OpenSTM32 Community라는 곳에서 만든 IDE이다. 먼저 이 프로그램을 다운받기 위해 다음 주소로 이동한다. http://www.openstm32.org/HomePage 참고로 이클립스 기반이니까 자바 홈페이지에서 제공하는 jdk는 깔아줘야함. 아마도?! 아래와 같이 홈페이지 화면이 나오는데 내용을 잘 보면 다운로드가 있다. 눌러준다. 그러면 로그인하라고 뜨는데 아이디가 ..

[Cortex-M3] 타이머(TIMER) 사용하기

STM32F100RB 칩 안에는 AVR처럼 여러개의 타이머가 있다. 각 타이머는 16bit로 동작하는것 같다. 먼저 타이머의 기능을 살펴보면 여러가지 모드가 있는데 가장 기본적인 Counter Mode(Upcounting & Downcounting)가 있고 아래의 기능도 제공한다. - Input Capture - Output Compare - PWM generation - One-pulse mode output 여기서는 가장 기본적인 Counter Mode와 PWM generation을 다루어 보겠다. 먼저 Counter Mode - Upcounting의 소스를 보면.. #include "stm32f10x.h" volatile unsigned int Timer2_Counter=0; void init_po..

[Cortex-M3] 겁나빠른 GPIO 사용하기

앞 글(http://embejied.tistory.com/82) 에서 GPIO 사용하는 방법에 대해 설명했었다. 하지만 GPIO의 속도가 매우 느리다. 왜냐하면 함수를 사용하기 때문에 느린것이다. 물론 이것도 빠르긴하지만 GPIO속도를 50MHz로 설정한 의미가 없다... while문에서 딜레이 없이 토글만 시켜도 1Mhz정도 밖에 안나온다. 이를 해결하려면 레지스터에 바로 접근하면 된다. 어떻게 하는 것일까... 처음 GPIO 초기화 소스는 똑같다. 하지만 main에서 사용할 때가 조금 다르다. GPIO_Write()등의 함수를 사용하지 않고 BSRR, BRR 레지스터를 사용하는 것이다. 아래 소스를 참고하자. #include "stm32f10x.h" void init_port() { GPIO_Init..

[Cortex-M3] GPIO 사용하기

내가 AVR(ATmega시리즈)을 배울때는 데이터시트 띄어놓고 레지스터보면서 코드를 짰지만 STM32 이놈은..... 너무 많다.... 난 항상 새로운걸 배울땐 무지에서 오는 귀찮음 때문에 진도가 안나간다... 친구는 그렇게 하지말고 예제를 보며 역추적하라고 해서 그 방법을 적용해볼까 한다. 먼저 코드부터 살펴봅시다~~ #include "stm32f10x.h" void init_port() { GPIO_InitTypeDef PORTA; GPIO_InitTypeDef PORTB; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE); PORTA.GPIO_Pin = 0x0001; PORTA.GPIO_Mode = GPIO_Mod..

[Cortex-M3] uVision4 새 프로젝트 만들기

새 프로젝트를 만들어보자. 일단 uVision4를 켠다. 새 프로젝트 만들기 클릭 적절한 위치에 폴더를 하나 만들고 프로젝트 이름을 입력하고 저장을 클릭한다. 저장버튼을 누르고 나면 CPU고르는 팝업이 하나 뜨는데 난 ST사의 칩을 사용하므로 스크롤을 내려 STMicroelectronics를 눌러서 STM32F100RB를 선택하고 OK버튼을 눌러준다. OK버튼을 누르면 아래와 같은 화면이 뜨는데 왼쪽의 Taget1 그림에 마우스 오른쪽버튼을 눌러서 Manage Project Items...를 클릭하고 설정창을 띄운다. 처음에는 Groups에 Source Group 1 하나만 있는데 더블클릭하여 이름을 Start up으로 바꿨다. 사실 이름은 안바꿔도 되는데 그냥 바꿔줬다. 그리고 CMSIS, User, ..

[Cortex-M3] KEIL MDK-ARM, STM32F10x : uVision4 개발환경구축 및 표준라이브러리 설치

드디어 나도 ARM 시리즈를 사용해보는구나... 일단 나는 ST사에서 나온 레퍼런스보드인 STM32VLDISCOVERY 보드로 Cortex-M3 를 다루어보고자 한다. 일단 해야할 일부터 나열해보자면 1. 개발 툴 설치 2. 레퍼런스코드 다운로드 3. 프로그래밍~ 요렇게 3단계가 되겠다. 개발 툴은 여러 가지가 있겠으나 나는 Keil사에서 만든 uVision4를 사용했다. 사실 난 이클립스를 사용해보고자 했으나 뭔가 해야할게 많아서..... 어쨌든 먼저 다운부터 받자. https://www.keil.com/download/product/ 여기로 들어가서 MDK-ARM v4를 클릭한다. 클릭하면 몇 가지 정보를 입력하고 나면 아래와 같은 화면이 나오는데 클릭하여 다운로드하고 설치해주자. 그럼 이제 ST사 ..