سیسوگ در قسمت نهم آموزش میکروکنترلر STM8 وقفه خارجی را توضیح داد. تا اینجا با همراهی سیسوگ در مجموعه مقالات آموزش میکروکنترلر STM8 چند نمونه برنامه نویسی با STM8 را فرا گرفتید. در این قسمت از آموزش میکروکنترلر STM8 ، سیسوگ قصد دارد برنامهای با استفاده از بیپر (Beeper) را آموزش دهد.
Beeper
سختافزار بیپر یک واحد تولید صدا است. این سختافزار در میکروکنترلر های دیگر وجود ندارد و در شرایطی که نیاز به یک خروجی قابل شنیدن هست مفید است. به عنوان مثال میتوان به پیغام هشدار اشاره کرد. بیپر از LSI برای تولید موجهای مربعی خروجی با فرکانس های 1kHz، 2kHz و 4kHz استفاده میکند. در بیشتر میکروکنترلرهای STM8 ، پین I / O ماژول بیپر (PD4) تا زمانی که پیکربندی آن توسط برنامه تغییر نکند به عنوان پین بیپر در دسترس نیست. با این حال، چند تراشه استثنایی مانند STM8S003 وجود دارد که نیازی به تغییر پیکربندی بیت نیست. ماژول بیپر وابسته به ماژول (Auto Wake-Up (AWU است.
اتصالات سخت افزاری میکروکنترلر STM8
کد نمونه Beeper
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | #include "STM8S.h" void clock_setup(void); void GPIO_setup(void); void beeper_setup(void); void main(void) { int j; clock_setup(); GPIO_setup(); beeper_setup(); while(TRUE) { GPIO_WriteLow(GPIOD, GPIO_PIN_3); BEEP_Cmd(ENABLE); for(j=0;j<0x5FFF;j++); GPIO_WriteHigh(GPIOD, GPIO_PIN_3); BEEP_Cmd(DISABLE); for(j=0;j<0x5FFF;j++); }; } void clock_setup(void) { CLK_DeInit(); CLK_HSECmd(DISABLE); CLK_LSICmd(ENABLE); while(CLK_GetFlagStatus(CLK_FLAG_LSIRDY) == FALSE); CLK_HSICmd(ENABLE); while(CLK_GetFlagStatus(CLK_FLAG_HSIRDY) == FALSE); CLK_ClockSwitchCmd(ENABLE); CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1); CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSI, DISABLE, CLK_CURRENTCLOCKSTATE_ENABLE); CLK_PeripheralClockConfig(CLK_PERIPHERAL_SPI, DISABLE); CLK_PeripheralClockConfig(CLK_PERIPHERAL_I2C, DISABLE); CLK_PeripheralClockConfig(CLK_PERIPHERAL_ADC, DISABLE); CLK_PeripheralClockConfig(CLK_PERIPHERAL_AWU, ENABLE); CLK_PeripheralClockConfig(CLK_PERIPHERAL_UART1, DISABLE); CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER1, DISABLE); CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER2, DISABLE); CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER4, DISABLE); } void GPIO_setup(void) { GPIO_DeInit(GPIOD); GPIO_Init(GPIOD, GPIO_PIN_3, GPIO_MODE_OUT_PP_HIGH_FAST); GPIO_Init(GPIOD, GPIO_PIN_4, GPIO_MODE_OUT_PP_HIGH_FAST); } void beeper_setup(void) { BEEP_DeInit(); BEEP_LSICalibrationConfig(128000); BEEP_Init(BEEP_FREQUENCY_2KHZ); } |
توضیحات
همانگونه که قبلا اشاره شد، ماژول بیپر ماژول وابسته به ماژول AWU است و بنابراین ما باید این ماژول کلاک محیطی را فعال کنیم:
1 | CLK_PeripheralClockConfig(CLK_PERIPHERAL_AWU, ENABLE); |
پین مربوط به بیتر را به عنوان خروجی تعریف میکنیم:
1 | GPIO_Init(GPIOD, GPIO_PIN_4, GPIO_MODE_OUT_PP_HIGH_FAST); |
پیکربندی بیپر ساده است. درست مانند دیگر قطعات، در ابتدا آن را پیکربندی می کنیم و سپس فرکانس LSI و بیپ را تنظیم می کنیم. به صورت اختیاری می توان LSI را کالیبراسیون کرد.
1 2 3 4 5 | void beeper_setup(void) { BEEP_DeInit(); BEEP_LSICalibrationConfig(128000); BEEP_Init(BEEP_FREQUENCY_2KHZ); |
برای فعال / غیر فعال کردن بیپر لازم است از دستورات زیر استفاده نمود:
1 2 | BEEP_Cmd(ENABLE); BEEP_Cmd(DISABLE); |
سیسوگ در قسمت یازدهم قصد دارد راه اندازی LCD کاراکتری را آموزش دهد. تا فراگیری کامل میکروکنترلر STM8 هم چنان با سیسوگ همراه باشید.
لینکهای دانلود
مطالب مرتبط
- قسمت اول − میکروکنترلر STM8 چیست و از کجا آمده است؟
- قسمت دوم − معرفی بردهای Discovery میکروکنترلر STM8
- قسمت سوم − کامپایلر و پروگرامر
- قسمت چهارم − STM8CubeMX
- قسمت پنجم − آماده سازی ابزارهای نرمافزاری برای STM8
- قسمت ششم − چگونه برنامه خود را روی STM8 آپلود کنیم؟
- قسمت هفتم− LED چشمکزن
- قسمت هشتم − کلاک سیستم (CLK)
- قسمت نهم − وقفه خارجی (EXTI)
- قسمت یازدهم − LCD کاراکتری
- قسمت دوازدهم − مبدل آنالوگ به دیجیتال (ADC)
- قسمت سیزدهم − تایمر نگهبان آنالوگ (AWD)
- قسمت چهادهم − تایمر نگهبان (IWDG)
- قسمت پانزدهم − تایمر نگهبان محدوده ای (WWDG)
- قسمت شانزدهم− اصول اولیه تایمرها
- قسمت هفدهم− تایمر 2
- قسمت هجدهم −تایمر 4
- قسمت نوزدهم −PWM
- قسمت بیستم − PWM تایمر 1
- قسمت بیست و یکم − بررسی اجمالی ارتباطات
- قسمت بیست و دوم − رابط سریال (UART)
- قسمت بیست و سوم − رابط کاربری سریال (SPI)
- قسمت بیست و چهارم − رابط I2C
- دوره رایگان آموزش میکروکنترلر STM8 – سیسوگ
چقدر دنبال یک آموزش برنامه نویسی برای stm8 بودم.همه جا پولی بود و معلوم نبود بعد از خرید ، آیا آموزش جامعی هست یا نه
امشب این آموزش رو دیدم و بسیار بسیار خوشحال شدم. البته کد نویسی رو بطور کامل توضیح نداده مثلا ابتدا چطور یک پایه رو ورودی یا خروجی کنیم در مرحله بعد چطور های یا لو کنیم و … اما باز دریچه ای برای یادگیری برای من باز کرد.واقعا مچکرم
سلام خواهش میکنم دوست عزیز
نظر لطف شماست – فرض توی این آموزش این بوده که زبان سی رو تا حد خوبی میدانید و با بیس اولیه میکروکنترلر آشنایی دارید