NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 2810 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 8 از 8

موضوع: راه اندازی اینتراپت سریال با استفاده از کتابخانه hal

  1. #1
    کاربر فعال
    تاریخ عضویت
    Jul 2012
    نوشته ها
    101
    تشکر
    23
    تشکر شده 3 بار در 1 پست

    Gadid راه اندازی اینتراپت سریال با استفاده از کتابخانه hal

    با سلام
    دوستان من برای دریافت سریال از طریق اینتراپت و با استفاده از کتابخانه hal راهنمایی میخوام ممنون میشم کمکم کنید
    تابع USART1_IRQHandler(void در stm32f1xx_it.c وجود دارد ولی با این حال که من در خط سریال دیتا ارسال میکنم ولی این تابع فعال نمیشود
    تابع  HAL_USART_Receive_IT() را باید در دل irq فراخوانی کنم؟اگر کسی مثالی دارد ممنون میشم توی نت خیلی سرچ زدم مثالی به دردبخور پیدا نکردم
    با سپاس

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    کاربر فعال
    تاریخ عضویت
    Mar 2010
    نوشته ها
    236
    تشکر
    101
    تشکر شده 246 بار در 163 پست

    پیش فرض

    شما داخل بخش configuration>usart>nvic_setting
    تیک enable رو زدید؟
    بعد باید داخل nvic
    مقدار priority ها رو دستی تنظیم کنید!!!!!!

  4. #3
    کاربر فعال
    تاریخ عضویت
    Jul 2012
    نوشته ها
    101
    تشکر
    23
    تشکر شده 3 بار در 1 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mrm نمایش پست ها
    شما داخل بخش configuration>usart>nvic_setting
    تیک enable رو زدید؟
    بعد باید داخل nvic
    مقدار priority ها رو دستی تنظیم کنید!!!!!!
    بله enableمی باشد ولی منظورتون از تنظیمات دستی "
    مقدار priority ها رو دستی تنظیم کنید!!!!!!"چیست؟
    من باید در فانکشن IRQ کد های دریافت سریال رو بنویسم؟

  5. #4
    کاربر فعال
    تاریخ عضویت
    Mar 2010
    نوشته ها
    236
    تشکر
    101
    تشکر شده 246 بار در 163 پست

    پیش فرض

    منظورم داخل بخش NVIC Configuration
    به تعداد اینتراپت ها مقدر Priority group
    preemption priority
    sub priority
    مقدار بدید
    مقلا اگر اینتراپت تایمر و یوزارت فعال هست با فرض Priority group=0 مقدار sub priority رو برای تایمر عدد یک و یوزارت رو عدد 2 بدید

  6. کاربران : 2 تشکر کرده اند از شما mrm برای ارسال این پست سودمند:


  7. #5
    کاربر فعال
    تاریخ عضویت
    Jul 2012
    نوشته ها
    101
    تشکر
    23
    تشکر شده 3 بار در 1 پست

    پیش فرض

    این کاری هم که گفتید انجام دادم ولی در تابعIRQ هیچ اتفاقی نمی افتد حتی فرمان روشن شدن یک LED رو گذاشتم در IRQ و از میکروی دوم سریال ارسال میکنم روشن نمیشود
    شما بگید من چطور دیتا دریافت کنم از میکروی یک توسط توابع PUTCHAR دوتا بایت دیتا ارسال میکنم ولی در میکروی دوم چطور دریافت کنم؟؟؟؟؟؟؟؟

  8. #6
    کاربر فعال
    تاریخ عضویت
    Mar 2010
    نوشته ها
    236
    تشکر
    101
    تشکر شده 246 بار در 163 پست

    پیش فرض

    پروژه رو کامل بزارید تا ببینم مشکل کجاست

  9. #7
    کاربر فعال
    تاریخ عضویت
    Jul 2012
    نوشته ها
    101
    تشکر
    23
    تشکر شده 3 بار در 1 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mrm نمایش پست ها
    پروژه رو کامل بزارید تا ببینم مشکل کجاست

    با تشکر دوست گرامی
    من از روی یه مثال
    این سه خط رو اضافه کردم به برنامه
    HAL_NVIC_SetPriority(USART1_IRQn,2, 1);
    HAL_NVIC_EnableIRQ(USART1_IRQn);
    __HAL_UART_ENABLE_IT(&huart1,UART_IT_RXNE);

    و الان IRQ فعال است و به اضای هر بایتی که ارسال میکنم led من چشمک زن میشود
    الان در بحث دریافت دیتا مشکل دارم من از برد اولم دوتا بایت پشت سر هم ارسال میکنم ولی نمیتونم این دوبایت را جدا جدا دریافت کنم و در متغیری بریزم در PIC خیلی راحت این کار رو میکردم
    یکباره میکرو فقط شروع میکنه بایت دوم رو میگیره نمایش میده
    من تابع


    HAL_UART_Receive_IT(&huart1, aRxBuffer, 1);

    در void USART1_IRQHandler(void) نوشتم و aRxBuffer یک آرایه با ایندکس 1انتخاب کردم
    من در میکروی اول یک دیتای 16بایتی دارم که چون در یوزارت نمیشود دریافت 16 داشت تبدیل کردم به دوتا 8 بایتی و میخوام در میکروی 2 این دو بایت را بگیرم و 16 بکنم و اگر انشالله بشود بقیه کارم را ادامه بدهم

    در پروژه ام چیز خواستی ننوشته ام چشم قرار میدهم

    - - - Updated - - -

    و در ضمن من وقتی اینتراپت irq ام میخورد while برنامه از کار میافتد
    مثلا یک پرینتف ساده میگذارم چاپ میشود ولی به محض آمدن دیتا به اینتراپت سریال دیگر قطع میشود

  10. #8
    کاربر فعال
    تاریخ عضویت
    Jul 2012
    نوشته ها
    101
    تشکر
    23
    تشکر شده 3 بار در 1 پست

    پیش فرض

    اینم از پروژه
    فايل هاي پيوست شده فايل هاي پيوست شده

موضوعات مشابه

  1. بسکام + تایمر + اینتراپت !!!
    توسط farzadsw در انجمن AVR
    پاسخ: 14
    آخرين نوشته: 03-09-2017, 13:48
  2. [سوال] اینتراپت
    توسط sh90 در انجمن stm32
    پاسخ: 6
    آخرين نوشته: 22-07-2015, 10:58
  3. استفاده از اینراپت در کوبی
    توسط fazel459 در انجمن miniPC و برد های Embedded
    پاسخ: 1
    آخرين نوشته: 25-02-2015, 21:12
  4. پاسخ: 1
    آخرين نوشته: 12-09-2014, 21:46

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •