해결된 질문
작성
·
20
0
spi 통신에서 선생님처럼 1엣지로 설정하고 진행하였을 때 작동이 되지 않았습니다. 그래서 2엣지로 바꿔서 작동하는데 성공시켰습니다. 이런 경우는 어떤 문제가 있었던 걸까요? 그리고 hspi2의 주소를 넘길 때 static SPI_HandleTypeDef *mhspi;를 사용하셨는데 static을 제거해도 작동이 되었습니다. static의 목적에 대해서 알고 싶습니다.
답변 2
0
일단 엣지에 관련된 내용은 제가 전에 답변을 한게 있어서 그걸로 대신할게요.
5분 25초에서 CPHA 1edge냐 2edge냐 옵션설정 부분에서 강의에서는 1edge로 설정하라 하셨는데 저의 경우에는 2edge로 설정해야만 LED가 켜집니다. 1edge에서는 안켜져요 왜그런지 알 수 있을까요?
제가 강의를 자세히 보니, send하는 부분을 이야기 하고 있네요.
gpio코드를 보면 사실상, 1edge와 2edge 둘다 걸리게 신호를 보내고 있습니다.
그래서 제가 1edge로 해도 상관 없다고 이야기를 한것입니다.
근데 데이터 시트를 보니, rising edge에 stored 된다고 써있네요.
high로 있다가 low로 떨어지고 rising 되는 순간이니깐, 2edge가 맞네요.
gpio로 만든 신호는 1edge와 2edge 둘다 신호를 세팅을 해놔서 문제가 없었던 것이고..
spi로 세팅하는건.. 2edge가 맞네요.
죄송합니다. ㅠ_ㅠ
그리고 hspi2의 주소를 넘길 때 static SPI_HandleTypeDef *mhspi;를 사용하셨는데 static을 제거해도 작동이 되었습니다. static의 목적에 대해서 알고 싶습니다.
간단하게 이야기하면, 해당 파일에서만 접근하려고 한거예요.
static 키워드는 변수의 생존기간과 가시범위를 제어하는 역할을 합니다.
코드 상황에 따라 목적이 달라질 수 있으나, 주로 다음과 같은 이유로 사용됩니다.
전역 변수의 범위 제한:
전역 변수를 선언할 때 static을 붙이면 해당 변수가 해당 소스파일 내에서만 참조 가능하도록 가시범위를 제한한다. 이를 통해 다른 파일에서 변수 이름 충돌이나 불필요한 접근을 방지할 수 있다.
지역 변수의 정적 할당:
함수 내부에 선언된 변수에 static을 붙이면, 함수가 여러 번 호출되더라도 그 변수는 프로그램 실행 동안 메모리 상에 고정적으로 유지된다. 이를 통해 함수 호출 사이에 변수가 값을 기억하도록 하는 용도로 사용한다.
0
안녕하세요, 인프런 AI 인턴입니다.
윤정현님께서 SPI 통신과 관련하여 엣지 설정과 static
키워드에 대해 물어보셨군요. 질문에 대한 답변을 드리며, 관련 내용을 조금 더 설명드리겠습니다.
SPI 통신에서의 엣지 설정 문제:
static
키워드의 사용 목적:
static
은 함수 내부에 선언된 변수가 함수를 벗어나더라도 그 값을 유지하도록 하는 역할을 합니다.static
을 제거해도 문제가 없이 작동했다는 것은, 코드 구조상 그 값이 유지되지 않아도 기능상 문제는 발생하지 않았기 때문일 수 있습니다.이와 관련된 유사한 질문과 답변이 다른 게시물에서 다루어졌으니, 참고하시면 추가적인 도움이 될 것입니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.