새로운 MCU 보드를 받고서는 가장 먼저 해 볼 수 있는 테스트는 GPIO 컨트롤일 것입니다. 펌웨어를 배우던 시기 LED 점멸에 성공했을 때의 기쁨이 생각나네요.

목적

NUCLEO-F767ZI 보드의 MCU(STM32F767ZI) GPIO를 설정하여 LED를 점멸할 수 있다.

준비물

  • NUCLEO-F767ZI 보드 및 회로도
  • STM32CubeMX
  • IAR WB for ARM

1. 회로도 확인

ST 사이트에서 NUCLEO-F767ZI 보드의 회로도를 확인한다.

테스트에 사용할 LED인 LD2는 GPIO 포트 B의 7번 핀에 연결되어 있음을 확인했다.

2. CubeMX 설정

STM32CubeMX에서 PB7에 대해 아래와 같이 설정해준다.

이후 전체 코드를 생성한다.

3. 코딩

100ms 간격으로 high와 low를 반복하는 코드를 작성한다. delay 함수는 HAL 라이브러리를 이용했다.

4. 확인

 

 

😊😘😭 글이 많이 부족합니다. 보시고 궁금하신 점 댓글로 남겨주시면 최대한 답변 드리겠습니다. 😔😏😁

목적

STM32CubeMX를 이용하여 NUCLEO-F767ZI 보드에서 원하는 주파수로 타이머(TIMER3) 설정을 하고, ISR에서 GPIO 토글을 구현하여 이를 확인할 수 있다.  

준비물

  • NUCLEO-F767ZI 
  • STM32CubeMX
  • IAR WB for ARM
  • Digilent Analog Discovery 2

1. 주파수 설정

타이머의 업데이트 주기를 설정해 준다. 여기서는 임의로 100ms로 정하고 설정을 해본다.

먼저 데이터쉬트에서 블록다이어 그램을 찾아 Timer3가 어떤 버스에 연결되어 있는지 확인한다.

위 블록다이어그램의 일부에서 확인 가능하듯이 Timer3는 APB1 버스에 연결되어 있다.

 

다음엔, STM32Cube-MX Clock Configuration에서 APB1 버스의 클럭이 얼마로 설정되어 있는지 확인한다. (디바이더로 조정 가능하다)

확인 결과 96MHz.

 

아래 공식에 의거 Prescaler 와 ARR 값을 정한다.

우리가 원하는 update frequency는 10Hz (100ms마다 한번) 이므로 ARR = 59999, Prescaler = 159 로 설정한다.

아래와 같이 CubeMX에서 입력한다.

여기까지가 타이머의 주파수 설정이다. 이후에는 인터럽트와 GPIO를 이용해 설정이 제대로 되었는지 확인해준다.

2. 인터럽트 설정

코드에 Timer3에 해당하는 ISR을 생성하기 위해 아래와 같이 NVIC Settings에서 체크박스에 클릭! 만 하면 끝.

이제 CubeMX에서 전체 코드를 생성하고 Timer3 설정부분의 코드가 아래와 같은지 확인한다.

또한 Timer3 ISR에 아래와 같이 토글 코드를 추가해 준다.

3. 실행 및 확인

오실로스코프로 우리가 원하는 100ms 이벤트가 발생하는지 확인한다.

위 그림에서 확인 가능하듯이 우리가 원하는 100ms 이벤트가 발생하고 있다.

끝.

김훈씨의 ⟪라면을 끓이며⟫ 수필에 나와있는 라면 레시피를 카피해본다.


사실, 이 글은 오랜 세월 동안 라면을 끓이고 또 먹어온 나의 라면 조리법을 소개하려고 시작했는데, 도입부가 좀 길어졌다. 이제부터가 본론이다. 라면 포장지에는 끓는 물에 면과 분말스프를 넣고 나서 4분 30초 정도 더 끓이라고 적혀 있지만, 나는 센 불로 3분 이내에 끓여낸다. 가정에서 쓰는 도시가스로는 어렵고, 야외용 휘발유 버너의 불꽃을 최대한으로 크게 해서 끓이면 면발이 붇지 않고 탱탱한 탄력을 유지한다. 면이 불으면, 국물이 투박하고 걸쭉해져서 면뿐 아니라 국물까지 망친다. 그러나 실내에서 휘발유 버너를 쓰는 일은 위험해서, 나를 따라 하면 안 된다(어린아이 조심!).

또 물은 550ml(3컵) 정도를 끓이라고 포장지에 적혀 있지만, 나는 700ml(4컵) 정도를 끓인다. 물이 넉넉해야 라면이 편안하게 끓는다. 수영장이 넓어야 헤엄치기 편한 것과 같다. 라면이 끓을 때, 면발이 서로 엉키지 않아야 하는데, 물이 넉넉하고 화산 터지듯 펄펄 끓어야 면발이 깊이, 또 삽시간에 익는다. 익으면서 망가지지 않는다.

라면을 끓일 때, 가장 중요한 점은 국물과 면의 조화를 이루는 일이다. 이것은 쉽지 않다. 라면 국물은 반 이상은 남기게 돼 있다. 그러나 그 국물이 면에 스며들어 맛을 결정한다. 국물의 맛은 면에 스며들어야 하고, 면의 밀가루 맛은 국물 속으로 배어나오지 않아야 한다. 이것은 고난도 기술이다. 센 불을 쓰며, 대체로 실패하지 않는다. 식성에 따라서 다르겠지만, 나는 분말스프를 3분의 2만 넣는다.

나는 라면을 조리할 때 대파를 기본으로 삼고, 분말수프를 보조로 삼는다. 대파는 검지손가락만한 것 10개 정도를 하얀 밑동만을 잘라서 세로로 길게 쪼개놓았다가 라면이 2분쯤 끓었을 때 넣는다. 처음부터 대파를 넣고 끓이면 파가 곯고 풀어져서 먹을 수가 없이 된다. 파를 넣은 다음에는 긴 나무젓가락으로 라면을 한 번 휘젓고 빨리 뚜껑을 덮어서 1분~1분 30초 쯤 더 끓인다. 파는 라면 국물에 천연의 단맛과 청량감을 불어 넣어주고, 그 맛을 면에 스미게 한다. 파가 우러난 국물은 달고도 쌉쌀하다. 파는 라면 맛의 공업적 질감을 순화시킨다. 

그다음에는 달걀을 넣는다. 달걀은 미리 깨서 흰자와 노른자를 섞어놓아야 한다. 불을 끄고, 끓기가 잦아들고 난 뒤에 달걀을 넣어야 한다. 끓을 때 달걀을 넣으면 달걀이 굳어져서 국물과 섞이지 않고 겉돈다. 달걀을 넣은 다음에 젓가락으로 저으면 달걀이 반쯤 익은 상태에서 국물 속으로 스민다. 이 동작을 신속히 끝내고 빨리 뚜껑을 닫아서 30초쯤 기다렸다가 먹는다. 파가 우러난 국물에 달걀이 스며들면 파의 서늘한 청량감이 달걀의 부드러움과 섞여서, 라면은 인간 가까이 다가와 덜 쓸쓸하게 먹을 만하고 견딜 만한 음식이 된다.

나는 이 모든 것을 스승 없이 혼자서, 수많은 실험과 실패를 거듭하며 배웠다. 레시피를 읽고 따라 한 것이 아니다. 앞으로도 새롭게 열어나가야 할, 전인미답의 경지가 보이기는 하지만 라면 조리법 개발은 이제 그만하려 한다.

나는 라면을 먹을 때 내가 가진 그릇 중에서 가장 아름답고 비싼 도자기 그릇에 담아서, 깨끗하고 날씬한 일회용 나무젓가락으로 먹는다.

라면을 끓일 때, 나는 미군에게 얻어먹던 내 유년의 레이션 맛과 초콜릿의 맛을 생각한다. 라면을 끓일 때 나는 저 헤아릴수 없이 많은 양계장의 닭들과 사지를 결박당한 과수원의 포도나무 사과나무 배나무 들과 양식장에서 들끓는 물고기들을 생각한다. 라면을 끓일 때 나는 사람들의 목구멍을 찌르며 넘어가는 36억 개 라면의 그 분말스프의 맛을 생각한다. 파와 계란의 힘으로, 조금은 순해진 내 라면 국물의 맛을 36억 개의 라면에게 전하고 싶다.

그런 생각을 하면서 한눈을 팔다가 라면이 끓어 넘친 적이 한두 번이 아니다. 라면의 길은 아직도 멀다.

' > ' 카테고리의 다른 글

라면을 끓이며  (0) 2021.01.04
지적 대화를 위한 넓고 얕은 지식 0(제로)  (0) 2021.01.01
노화와 질병  (0) 2020.10.10
마광수 <상상놀이>  (0) 2020.10.02
스티브 워즈니악  (0) 2020.09.11
나는 슈뢰딩거의 고양이로소이다  (0) 2020.07.11

+ Recent posts