2017-10-24 5 views
1

6 단계로 PWM LED 디밍을 구현하려고합니다. 각 단계가 더 밝아지면서 클릭 버튼을 기준으로 외부 핀을 증가시킵니다. 타이머에 값을 제공합니다.STM32 - TIM2_ETR 핀, 핀을 PA0 (버튼)에 연결하여 이상한 방식으로 타이머를 증가

나는 가끔씩 value 변수가 너무 커서 일정 수준의 밝기를 건너 뛰는 문제가 있습니다. 예를 들어, value 증분 : 1,2,3, 6,7 등으로 점프.

누구나 내가 실수를 저지르고 있는지 정확히 지적 할 수 있습니다. 그것은이 접촉이 튀는처럼 보이는 학교 과제

+0

말하기 어렵습니다. 많은 코드를 보여 주지만,'__HAL_TIM_GetCounter'에 대한 정의가 보이지 않습니다.이 변수는 찾을 수있는 유일한 'value' 변수에 저장된 값을 결정하는 것으로 보입니다. – jwdonahue

+0

@jwdonahue 스크롤 조금 :) 나는 PA0의 초기화를 놓치고있다, 그것은 너무 명백한 시야에 숨어 있어야합니다. – berendi

+0

그건 그렇고, [나는이 질문에 대답했다] (https://electronics.stackexchange.com/a/336052/93879) – berendi

답변

1

때문에, 제거 코드 :

// 편집 : 다음은 코드입니다. 입력이 CPU에 의해 처리 될 때, 그것을 해결하는 간단한 방법은 이벤트가 감지 된 후 일정 기간 동안 입력을 비활성화하는 것입니다. 버튼에서 타이머 입력을 직접 제어하므로 많은 제어가 불가능할 수 있습니다. 그러나, 당신의 경우에는 sClockSourceConfig.ClockFilter 필드에 의해 설정됩니다 SMCR 레지스터의 ETF 필드와 실험하고 CR1 레지스터의 클럭 제수 CKD (코드에서 htim2.Init.ClockDivision처럼 보입니다) (죄송합니다, STM 라이브러리에 익숙하지 않습니다.)