목록MCU (60)
Brise
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162#include #include "stm32f4xx.h" int fputc(int ch, FILE *f) { while(USART_GetFlagStatus(USART2, USART_FLAG_TXE)==0); /* TX가 가능할 때까지 blocking*/ USART_SendData(USART2, ch); /* 데이터를 보낸다. */ return (ch);} int main(){ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); GPIO_InitTypeDef ..
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950#include "stm32f4xx.h" int main(){ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); GPIO_InitTypeDef GPIO_InitStruct; GPIO_StructInit(&GPIO_InitStruct); GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF; GPIO_Init(GPIOA, &GPIO_InitStruct); GPIO_StructInit(&GPIO_InitStruct..
12345678910111213141516171819202122232425#include "stm32f4xx.h"int main(){ RCC->AHB1ENR |= RCC_AHB1Periph_GPIOA; GPIOA->MODER &= ~((0x3
디스커버리 보드의 BSP는 사용자에게 여러 기능들을 편리하게 사용할 수 있는 기능들을 제공하지만, 예제 프로젝트가 CubeMX기반이 아니다 보니 유저가 설정을 추가하거나 바꾸기 힘든 부분이 있습니다. 때문에 CubeMX로 생성하고 BSP설정을 추가하는 노가다를 해야하는데, 이 부분의 수고를 덜기 위해 CubeMX프로젝트에 BSP을 추가하여 연동하는 방법을 이 포스트에서 소개합니다. 전체 프로젝트를 올리면 편하겠지만, 용량 문제로 필요한 파일만 업로드 합니다. 1. CubeMX를 설치합니다. 2. 첨부된 파일을 이용하여 프로젝트 코드를 생성합니다. (프로젝트 생성 디렉토리 변경 필요)3. 생성된 프로젝트를 엽니다. 4. BSP 관련 파일을 추가합니다. C:\Users${UserName}\STM32Cube..
2017/04/28 - [STM32CubeMX] STM32F429-disc0 엔코더값 입력받기(quadrature encoder pulse) -1 이전 예제에서 이어 이 예제에서는 엔코더가 감지한 실제 각도를 액정에 출력해보겠습니다. 또한, 엔코더에 있는 Index 엔코더를 이용하여 한바퀴의 시작이 어느 부분인지 확인할 수 있도록 해보겠습니다. 설정 방식은 이전의 설정에 새로운 엔코더 모드로 동작하는 타이머를 동작시켜 실행합니다. 수도 코드는 다음과 같습니다. 1. 엔코더값 감지2. 각도 산출3. 바퀴값이 바뀐경우 --> 산출된 각도를 갱신4. 각도를 디스플레이 구현 코드는 다음과 같습니다.버퍼링을 하면 좀 더 깔끔히 나오겠지만, 굳이 예제에 할필요는 없을 것 같네요;; 123456789101112131..
이 예제는 다음 유튜브 동영상을 참고하여 만들었습니다. 먼저 이전 글에 있던 STM32CubeMX 프로젝트 파일을 불러옵니다. 2017/04/27 - [STM32CubeMX] STM32F429-DISC0 LCD 출력하기 STM32F429-DISC0보드의 경우 LCD와 SDRAM이 많은 핀을 차지하여 TIM2를 이용하여 encoder모드로 설정합니다. Configuration 탭에서 TIM2를 설정합니다. Counter Period의 값을 설정하여 타이머 카운터의 최대값을 설정할 수 있습니다. (최대 값을 넘으면 0으로 다시 바뀝니다.) 테스트용 유저 생성 코드는 다음과 같습니다. 1234567891011121314151617181920212223242526272829303132333435363738394..
위 동영상을 따라 만든 STM32F429보드용 STCubeMX 프로젝트 파일입니다. 설정한 내용은 다음과 같습니다. 위와 같이 설정하고 프로젝트 코드를 생성하면(필자의 경우 TrueStudio) 설정한 폴더에 코드가 생성됩니다.. 생성된 코드는 비록 우리가 Discovery보드로 설정을 했더라도, Discovery 보드에서 사용할 수 있는 BSP코드들을 자동으로 포함해주지 않습니다. 때문에 수동으로 BSP관련 코드들을 넣어주어야 합니다. 이를 위하여 펌웨어를 저장한 폴더로 접근합니다. STM32CubeMX에서는 기본적으로 사용자의 폴더 아래에 펌웨어를 저장합니다.(C:\Users${사용자 이름}\STM32Cube\Repository\STM32Cube_FW_F4_V1.16.0) 펌웨어 폴더는 다음과 같습..
이 예제에서는 가변저항의 전압값을 읽어온 후 전압값에 따라 서보모터를 움직인다. 가변저항은 이전 adc예제를 이용하여 전압값을 읽어오며, 읽어오는 전압값은 0~5V, 값으로는 0~1023사이의 값으로 읽어들여진다. RC 서보모터의 경우 PWM 신호를 받아 동작한다. 서보모터의 한 주기는 20ms로 1초당 50번 반복되어야 하며핀의 값이 HIGH인 시간이 0.5ms일 때 서보모터의 각도가 0도가 되며핀의 값이 HIGH인 시간이 2.5ms일 때 서보모터의 각도가 180도가 된다. 아트메가128에서 서보모터를 제어하기 위해서 20ms주기의 PWM을 발생시킨다. 아트메가128에는 타이머 1,3(8비트 타이머) 타이머 2,4(16비트 타이머)가 있으며 8비트 타이머로는 충분한 정밀도를 확보하기 어렵기 때문에 16..