خواندن پایه در STM32
در این آموزش میخواهیم وضعیت خواندن پایه در stm32 را انجام دهیم
ساخت پروژه در cubemx
برای این کار در نرم افزار STM32CubeMX وضعیت پایه ای را که میخواهیم بخوانیم را در حالت ورودی یا همان Input قرار میدهیم مانند تصویر پایین :
حالا یک خروجی برای نرم افزار keil میگیریم ( طبق جلسه ساخت پروژه در stm32cubemx )
دستور if چیست؟
در لغت if به معنای “اگر” هست ، در برنامه نویسی هم همین معنی را دارد
برای مثال اگر فلان پایه وضعیتش ۰ بود فلان کار را انجام بده ، به همین راحتی
روش نوشتن دستور if به این شکل هست دستور if را مینویسیم و پارامتر را درون پرانتز مینویسیم و اگر شرط درست بود کد های بین { و } اجرا میشوند مانند کد پایین :
if( شرط ){ دستوراتی که باید اجرا شود }
شرط را باید چطور بنویسیم؟
- برای اینکه بفهمید یک مقدار با یک مقدار دیگر برابر است باید از == (برابری) استفاده کنید
- برای اینکه بفهمید یک مقدار از مقدار دیگر کوچیکتر یا بزرگتر هست باید از علامت های < و > استفاده کنید
چند نمونه شرط
در شرط زیر بررسی میکنیم که اگر مقدار پایه GPIOA 0 برابر بود با ۰ دستورات را اجرا کند
if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)== 0){ دستوراتی که باید اجرا شود }
در شرط پایین بررسی میشود که اگر متغیر hamyar بزرگتر از ۱۰ بود دستورات را اجرا کند
if(hamyar > 10){ دستوراتی که باید اجرا شود }
مثال پروژه محور
در این مثال میخواهیم در صورتی که یک دکمه فشار داده شد یک ال ای دی روشن شود و پس از ۱ ثانیه خاموش شود
شماتیک مدار :
کد های دستور while
در کد های پایین نوشته شده که اگر مقدار پایه c14 برابر با ۱ بود ، پایه c13 را روشن کند
while (1) { if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_14)== 1){ HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,1); HAL_Delay(1000); HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,0); } }
تمرین برای شما
پروژه ای بنویسید که در آن یک سون سگمنت استفاده شده باشد و با زدن دکمه و خواندن پایه در STM32 یک عدد به اعداد سون سگمنت شروع شود و وقتی عدد بیشتر از ۹ شد عدد به ۰ کاهش پیدا کند.