سلام دوستان
وقفه نرم افزاری چطور باید راه اندازی کرد؟ لطفا" اگه مراحل خاصی داره در موردش توضیحی بدین.
سلام دوستان
وقفه نرم افزاری چطور باید راه اندازی کرد؟ لطفا" اگه مراحل خاصی داره در موردش توضیحی بدین.
_____________________________________
_____________________________________
سلام
منظورتان از وقفه نرم افزاری چه هست؟
در این میکروها که یه وقفه خارجی هست.
سلام تنظیمات وقفه رو برای یکی از خطوط وقفه نرم افزاری انجام بده
بعد با 1 کردن بیت متناظر با خط استفاده شده در رجیستر EXTI_SWIER یه وقفه ایجاد میشه همچنین میتونی از تابع زیر استفاده کنی.
کد:EXTI_InitTypeDef EXTI_InitStructure; EXTI_InitStructure.EXTI_Line = EXTI_SWIER_SWIER0; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure);
همچنین بعد از ایجاد وقفه بیت متناظر رو در رجیستر EXTI_PR باید صفر کرد تا برای ایجاد وقفه های بعدی عمل کنه.
کد:void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line)
کد:void EXTI0_IRQHandler() { if(EXTI_GetITStatus(EXTI_IMR_MR0) != RESET) { EXTI_ClearITPendingBit(EXTI_IMR_MR0); } }
ویرایش توسط mohammadne : 06-01-2016 در ساعت 20:48
_____________________________________
_____________________________________
بله این کد رو نوشتم و تست کردم ، راستی وقفه نرم افزاری کجا به کار میاد ؟؟؟
software interrupt
_____________________________________
_____________________________________
سلام.
وقفه نرم افزاری یه مورد تو برنامه نویسی داریم که معمولا بهش میگن exception.
مورد دیگه که منظور دوستمون هست توسط فرایندهای در حال اجرا تولید می شود.
- Typically software interrupts are requests for I/O (Input or Output). These will call kernel routines which will schedule the I/O to occur. For some devices the I/O will be done immediately, but disk I/O is usually queued and done at a later time. Depending on the I/O being done, the process may be suspended until the I/O completes, causing the kernel scheduler to select another process to run. I/O may occur between processes and the processing is usually scheduled in the same manner as disk I/O.
- The software interrupt only talks to the kernel. It is the responsibility of the kernel to schedule any other processes which need to run. This could be another process at the end of a pipe. Some kernels permit some parts of a device driver to exist in user space, and the kernel will schedule this process to run when needed.
برنامه نویسی ویندوز 10 رزبری را با زبان آردوینو تجربه کنید!
ایمج آماده کیوت 5.7 برای بردهای رزبری - آرنج پای - نانوپای - کیوبی - سینلینکس - پاین 64
آموزش راه اندازی اولیه برد EasyARM و کامپایل سورس WinCE
آموزش های فارسی لینوکس - ویندوز - متلب - سیمیولینک - کیوت برای رزبری پای
مشاوره رایگان خرید کامپیوتر های تک بردی فروشگاه کویر الکترونیک
ارتباط با من از طریق پست های انجمن و یا ایمیل یاهو موجود در بخش کاربری
تفاوت فراخوانی تابع با استفاده از وقفه نرم افزاری با فراخوانی تابع به صورت مستقیم در اینه که، دیگه مشکلی با stack pointer پیدا نمیکنید، تو بحث سیستم عامل stack pointer مساله ی خیلی مهم و حساس هست.
_____________________________________
_____________________________________