در قسمت نهم آموزش میکروکنترلر STM8 وقفه خارجی را توضیح داد. تااینجا با همراهی ما در مجموعه مقالات آموزش میکروکنترلر STM8 چندنمونه برنامهنویسی با STM8 را فراگرفتید. در این قسمت از آموزش میکروکنترلر STM8 ، قصد داریم برنامهای بااستفادهاز بیپر (Beeper) را آموزشدهد.
Beeper
سختافزار بیپر یک واحد تولید صدا است. این سختافزار در میکروکنترلرهای دیگر وجود ندارد و درشرایطیکه نیازبه یک خروجی قابلشنیدن هست مفید است. بهعنوانمثال میتوان به پیغام هشدار اشارهکرد. بیپر از LSI برای تولید موجهای مربعی خروجی با فرکانسهای ۱kHz، ۲kHz و ۴kHz استفاده میکند. در بیشتر میکروکنترلرهای STM8 ، پین I/O ماژول بیپر (PD4) تازمانیکه پیکربندی آن توسط برنامه تغییرنکند بهعنوان پین بیپر دردسترس نیست. بااینحال، چند تراشه استثنایی مانند STM8S003 وجوددارد که نیازیبه تغییر پیکربندی بیت نیست. ماژول بیپر وابستهبه ماژول (Auto Wake-Up (AWU است.
اتصالات سخت افزاری میکروکنترلر STM8
کد نمونه Beeper
#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 است و بنابراین ما باید این ماژول کلاک محیطی را فعالکنیم:
CLK_PeripheralClockConfig(CLK_PERIPHERAL_AWU, ENABLE);
پین مربوطبه بیتر را بهعنوان خروجی تعریف میکنیم:
GPIO_Init(GPIOD, GPIO_PIN_4, GPIO_MODE_OUT_PP_HIGH_FAST);
پیکربندی بیپر ساده است. درست مانند دیگر قطعات، در ابتدا آن را پیکربندی می کنیم و سپس فرکانس LSI و بیپ را تنظیم میکنیم. بهصورت اختیاری میتوان LSI را کالیبراسیون کرد.
void beeper_setup(void) { BEEP_DeInit(); BEEP_LSICalibrationConfig(128000); BEEP_Init(BEEP_FREQUENCY_2KHZ);
برای فعال/غیر فعال کردن بیپر لازماست از دستوراتزیر استفادهنمود:
BEEP_Cmd(ENABLE); BEEP_Cmd(DISABLE);
در قسمت یازدهم قصد داریم راهاندازی LCD کاراکتری را آموزشدهد. تا فراگیری کامل میکروکنترلر STM8 همچنان با ما همراهباشید.
منبع: سیسوگ