سیسوگ در قسمت نهم آموزش میکروکنترلر STM8 وقفه خارجی را توضیح داد. تا اینجا با همراهی سیسوگ در مجموعه مقالات آموزش میکروکنترلر STM8 چند نمونه برنامه نویسی با STM8 را فرا گرفتید. در این قسمت از آموزش میکروکنترلر STM8 ، سیسوگ قصد دارد برنامهای با استفاده از بیپر (Beeper) را آموزش دهد.
سختافزار بیپر یک واحد تولید صدا است. این سختافزار در میکروکنترلر های دیگر وجود ندارد و در شرایطی که نیاز به یک خروجی قابل شنیدن هست مفید است. به عنوان مثال میتوان به پیغام هشدار اشاره کرد. بیپر از LSI برای تولید موجهای مربعی خروجی با فرکانس های 1kHz، 2kHz و 4kHz استفاده میکند. در بیشتر میکروکنترلرهای STM8 ، پین I / O ماژول بیپر (PD4) تا زمانی که پیکربندی آن توسط برنامه تغییر نکند به عنوان پین بیپر در دسترس نیست. با این حال، چند تراشه استثنایی مانند STM8S003 وجود دارد که نیازی به تغییر پیکربندی بیت نیست. ماژول بیپر وابسته به ماژول (Auto Wake-Up (AWU است.
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 بودم.همه جا پولی بود و معلوم نبود بعد از خرید ، آیا آموزش جامعی هست یا نه
امشب این آموزش رو دیدم و بسیار بسیار خوشحال شدم. البته کد نویسی رو بطور کامل توضیح نداده مثلا ابتدا چطور یک پایه رو ورودی یا خروجی کنیم در مرحله بعد چطور های یا لو کنیم و … اما باز دریچه ای برای یادگیری برای من باز کرد.واقعا مچکرم
سلام خواهش میکنم دوست عزیز
نظر لطف شماست – فرض توی این آموزش این بوده که زبان سی رو تا حد خوبی میدانید و با بیس اولیه میکروکنترلر آشنایی دارید
نویسنده شو !
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.