کار نکردن تایمر stm32

سلام بر همه ی متخصصین گرامی.
بنده یه چند روزی هست می خوام با میکروی stm32f030f4p6 کار کنم. ولی یه مشکل عجیبی خوردم که جلوی روند پروژم رو درگیر نکرده ولی به نظرم عجیبه که چرا اینجوریه.
خلاصه بگم که میخوام با تایمر های این میکرو کار کنم ولی هر تایمر یه نقص فنی خاصی داره.
مثلا تایمر 1 روی بعضی چنل هاش pwm کار میکنه ولی روی بعضی هاش به شدت ولتاژ پایینی میده.
باز روی همون چنل هایی که کار میکنه بعضی هاش روشون duty cycle میشه تنظیم کرد و حین کارکرد میکرو تغییر داد ولی روی چنل بغلی مثلا چنل 2 هر کاری میکنم تنظیم نمیشه.
و این هایی که گفتم فقط مختص تایمر 1 نیست و هر تایمری یه چیزیش کار نمیکنه. مثلا فانکشن اینتراپتcall back تایمر ها یکی در میون کار میکنه.
تقریبا مطمعن هستم که تنظیمات cube mx درست هستش و کد هام رو هم زیاد بررسی کردم.
نمونه کد هام هم به این صورت هست :

__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_2,50);

برای تنظیم دیوتی سایکل تایمر 1 چنل 2 روی 50 (پریود 100)

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
}
فانکشن کال بک که فکر کنم با اینتراپت هر تایمری باید فراخوانی بشه.

سلام
Cube MX را به روز کنید، نسخه DFP Pack میکروی مورد استفاده را نیز همینطور، مطمئن شوید نسخه معتبری از کتابخانه ای که تنظیمات Cube MX کد ها را بر اساس آن تولید میکند مثل HAL, LL, SPL و غیره را روی سیستم خود دارید، سپس کدهای تولید شده از Cube MX را چک کنید اگر مطمئنید همه درست تولید شده اند باید برید سراغ رجیستری نویسی اگر در رجیستری نویسی هم مشکل داشت باید سخت افزار چک بشه، اگر برد صحیح طراحی و مونتاژ نشده باشه امکان بروز این مشکل و بسیاری مشکلات دیگر محتمله.

1 پسندیده