"Hello World"
오늘은 infineon XMC 시리즈의 프로그래밍을 위한 첫 번째로 Blinking LED 를 구현해본다.
앞 글에서 소개한 DAVE(Digital Application Virtual Engineer) 를 이용하여 코딩하면 되고
ARM용 GCC 컴파일러가 내장되어 있어서 생각보다는 쉽게 접근할 수 있다.
재밌는 점은 STM32 CubeMX와 마찬가지로 그래픽한 설계도구를 제공하여 쉽게 코드를 생성할 수 있다.
DAVE와 관련된 자세한 사항은 infineon 홈페이지를 참조하는 것이 좋을 것이고, 우선 바로 코딩을 시작해본다.
DAVE를 실행하고 나서, File - New - DAVE project를 선택한다.
- Project Name을 작성.
- Project Type: DAVE CE Project 선택.
- Tool Chain: ARM-GCC Application 선택.(Default)
Next> 클릭.
XMC4300 보드를 사용하므로,
- XMC4300 Series 선택
Finish 클릭.
프로젝트가 생성된다.
DAVE 프로그램 상단에 [Add New APP] 을 선택하면 아래 오른쪽과 같은 창이 뜬다.
Search filter에 DIGITAL을 검색하고 DIGITAL_IO를 Add하는데, 보드에 있는 LED 2개를 모두 사용할 예정이므로 add를 두번 한다.
Add를 모두 하고 나면 프로그램 하단에 APP Dependency에 2개의 DIGITAL_IO 블럭이 생성된다.
XMC4300 B/D의 LED 핀 정보를 찾아서 DIGITAL_IO에 적용하고 이름을 변경하면 된다.
블럭에 마우스 우클릭 상태에서,
- Rename Instance Label..: LED1, LED2
- Manual Pin Allocator..: LED1은 P4.0, LED2는 P4.1
- Configure App Instance..: Pin direction: Input/Output 선택.
이렇게 해서 하드웨어 세팅이 완료되었다, 이것을 코드로 생성하기 위해서 상단에 [Generate Code]를 클릭한다.
우리는 DIGITAL IO에 대해서 하드웨어적인 세팅을 하였고 그에 대한 코드 생성을 하였다.
그 코드는 프로젝트의 Dave폴더 - Generated - DIGITAL_IO 폴더가 생성되어 포함된다.
digital_io.h 에 있는 함수들을 가지고 LED 동작을 구현해본다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
/*
* main.c
*
* Created on: 2021 May 19 16:56:27
* Author: jexe
*/
#include "DAVE.h" //Declarations from DAVE Code Generation (includes SFR declaration)
/**
* @brief main() - Application entry point
*
* <b>Details of function</b><br>
* This routine is the application entry point. It is invoked by the device startup code. It is responsible for
* invoking the APP initialization dispatcher routine - DAVE_Init() and hosting the place-holder for user application
* code.
*/
int main(void)
{
DAVE_STATUS_t status;
status = DAVE_Init(); /* Initialization of DAVE APPs */
if (status != DAVE_STATUS_SUCCESS)
{
/* Placeholder for error handler code. The while loop below can be replaced with an user error handler. */
XMC_DEBUG("DAVE APPs initialization failed\n");
while(1U)
{
}
}
/* Placeholder for user application code. The while loop below can be replaced with user application code. */
while(1U)
{
DIGITAL_IO_ToggleOutput(&LED1);
for (float i=0; i<9000000; i++); //delay 144000000/(16/time in sec)
DIGITAL_IO_ToggleOutput(&LED1);
for (float i=0; i<9000000; i++); //delay 144000000/(16/time in sec)
DIGITAL_IO_SetOutputHigh(&LED2);
for (float i=0; i<9000000; i++); //delay 144000000/(16/time in sec)
DIGITAL_IO_SetOutputLow(&LED2);
for (float i=0; i<9000000; i++); //delay 144000000/(16/time in sec)
}
}
|
cs |
Live watch 사용하는 법은 Timer 동작이나 다른 코드 소개 시에 설명하겠다.
'Infineon' 카테고리의 다른 글
XMC4300 | ADC 그리고 Micrium uC/Probe (0) | 2021.08.09 |
---|---|
Infineon 개발 환경 구축 (0) | 2021.05.17 |