Autonomous Lawn Mower/Embedded C
-
Moving averageAutonomous Lawn Mower/Embedded C 2025. 2. 9. 12:21
ADC값이 자주 변동이 있어서 moving average를 사용하고자 한다. STM32F401에서는 동작이 버거운듯하다. moving average 코드를 넣으면 모터가 구동이 안된다. T.T 1 channel ADC moving average #include #include #define AVERAGE_NUMBER 10 // Moving average window size int32_t sum = 0; int pos = 0; int16_t arrNumbers[AVERAGE_NUMBER] = {0}; // Array buffer for moving average /** * @brief Moving Average Calculation Function * @param ptrArrNumbers Po..
-
Static, extern, volatile, constAutonomous Lawn Mower/Embedded C 2023. 5. 11. 10:33
static 해당 파일 내에서만 사용 가능. 다른 파일에서 참조 불가 파일 내에서 전역변수로 사용한다. extern 다른 파일에 있는 변수나 함수를 공유하기 위해서 사용한다. 참조하고자 하는 변수나 함수는 다른 파일에 선언되어 있고, extern은 사용할 파일 내에서 선언해야 함 volatile 변수가 언제 어떻게 바뀔지 모른다고 알려주기 위해서 사용한다. 컴파일러는 volatile변수를 최적화에서 제외하며, 항상 메모리에 접근 가능하도록 한다. const 이미 정의된 값을 변경할 수 없게 만들기 위해서 사용한다. 예외) const int i=0; *(int*)(&i)=1; #define은 메모리가 할당되지 않지만, const는 메모리가 할당되어 디버깅 시에 메모리 값을 확인 가능하다. extern co..
-
__STATIC_INLINEAutonomous Lawn Mower/Embedded C 2022. 12. 26. 13:34
Define a static function that may be inlined by the compiler. Defines a static function that may be inlined by the compiler. If the compiler generates inline code for all calls to this functions, no additional function implementation is generated which may further optimize space. Code Example: \\ Get Interrupt Vector __STATIC_INLINE uint32_t NVIC_GetVector(IRQn_Type IRQn) { uint32_t *vectors = (..