حالت کانتری stm32

علت استفاده از کانتر به جای I/O این است که لبه ها برایمان مهم است. پشت پین های وقفه و تایمری edge detector دارند. و این برای پین هایی که کلاک نیستند ولی میخواهیم با آن ها کلاک بخونیم.

همچنین به دلیل کار تایمر جدا از cpu میتوان حالت های شبه موازی در برنامه ایجاد کرد.

میتوان با این حالت فرکانس شمار ساخت. بدین صورت که مثلا در ۱ ثانیه تعداد پالس ها را بشمرد.

 

مثال: با استفاده از TIM2 در حالت کانتری, تعداد زدن کلید را میشماریم.

با انتخاب TI1FP1 در قسمت Trigger source میتوانیم پالس های یکی از پایه ها را بشماریم که آن پایه در نرم افزار stm32cube سبز میشود و در تایمر۲ پایه A0 میباشد.

TI1FP1 یعنی trigger input 1 یعنی کلاک رو از ورودی میگیریم.

اگر prescaler 0باشد, هر یک پالسی که به ان پایه ی میکرو می آید , یک واحد به رجیستر تایمر کانتر اضافه می شود.

در counter period عددی که میخواهیم تا آن مقدار شمرده شود را تعیین میکنیم. ما اینجا آن را برابر حداکثر مقدار خود قرار داده ایم.

تریگر فیلتر یک فیلتر دیجیتالی است. عدد تریگر فیلتر هر چه قدر بزرگ تر bounce گیری کلید بیشتر می شود. که این عدد بین ۰ تا ۱۵ باید انتخاب شود.

ورودی را پول دان می کنیم. کلید را به پایه PA0 وصل میکنیم.

 

حالا کد:

HAL_TIM_Base_Start(&htim2); برای روشن کردن تایمر تا بتوانیم از آن استفاده کنیم.

__HAL_TIM_SET_COUNTER(&htim2, 0); ماکرویی برای تعیین مقدار اولیه کانتر.

__HAL_TIM_GET_COUNTER(&htim2) ماکرویی برای گرفتن عدد رجیستر کانتر.

zeta
izeta.ir@gmail.com

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد.