مهندس در حالت کلی برای همه میکرو ها میشه عبارت PORTA , PORTB ,... رو نوشت .وقتی میزنم port1 یا port2 ... خطا میده . در lpc همینها رو میزدیم دیگه!
و دیگه اینکه هنوز برام کار کردن با رجیسترهای کرتکس جا نیوفتاده. اگر بخواهیم با رجیستر کار کنیم برای ست ریست کردن این led ها باید برای کدام پایه برنامه بنویسیم؟ چون مثلا پایه 12 را می خواهیم ست کنیم این میشه؟ :
بعدش باید با Mask و Shift بیت مورد نظرت رو نشون بدی .
همچنین میشه یسری رجیسترها رو هم نوشت . مثلا برای همین پورت ورودی خروجی میشه GPIOA_ODR یا GPIOA_BRR یا GPIOA_BSRR و .. رو نوشت.
مثلا می خواهیم بیت 10 پورت C رو تو Logic Analyzer نمایش بدیم :
1- رجیستر GPIOC_ODR رو Add کنید .
2- Display Type رو روی Bit تنظیم کنید.
3- تو قسمت And Mask عدد 0x400 رو که معادل 1024 دسیمال و 2 به توان 10 هست وارد میکنیم .
4- تو قسمت Shift Right عدد 10 رو بمعنی 10 بیت شیفت براست وارد میکنیم .
به همین راحتی
سلام
درسته یادم نبود . برای lpc ها مثل اینکه PORTA جواب نمیده . باید همون PORT1 رو زد . ولی این دو عبارت معمولا کار میکنه . معمولا نامگذاری پورت ها یا با عدد هست یا با حروف ....
چون شما اینو GPIOD->ODR = 0x100 نوشته بودی .فکرکردم فقط منظورت برای میکرو های ST هست .
برای stm32f407 شما GPIOA_ODR رو تست کردید ؟ جواب نداد ؟ اتفاقا همین رجیستر ODR رو تو سری F4 هم داریم ! باید کار کنه ...
یه نکته!
میکروهای st مخصوصا سری f4 هنوز توی شبیه ساز کیل ساپورت درست حسابی ندارن. من خودم تست نکردم شبیه ساز رو برای f4 هنوز ولی می دونم ساپورتی که برای lpc ها هست توی شبیه ساز برای st ها نیست.
سلام. شاید به خاطر همین کامل نبودن باشه که نه POTR1 را قبول میکنه نه PORTA
حالا می خواهید شما یه تستی بزنید شاید از من این طور بود!
بله دیگه من دارم با همین برد دیسکاوری کار می کنم. چون ابتدای کارم با stm هست فعلا ابتدای کار می خواهم با رجیستر کار کنم. اولین برنامه هم که معلومه! یه برنامه ساده چشمک زن برا ledهای روی برد:
[PHP]/* Includes ------------------------------------------------------------------*/
#include "stm32f4xx.h"
int main (void)
{
int i, j;
GPIOD->ODR = 0xF000; /* PD12 .. PD15 defined as Outputs */
GPIOD->BSRRL = 0xF000; /* turn off all the LEDs */
while(1)
{
GPIOD->BSRRH = 0xF000;
for(j = 1000000; j > 0; j--);
GPIOD->BSRRL = 0x000000FF;
for(j = 1000000; j > 0; j--);
}
[/PHP]این برنامه خطا میده. چه هدرهایی و چه دستورات دیگری باید بهش اضافه کنیم تا درست بشه بریزیم رو برد کار کنه؟
چون با رجیستر کار میشه قائدتا دیگه نباید توابع cmsis را add کنیم. درسته؟
ویرایش توسط mzarkoob : 23-06-2012 در ساعت 20:11
سلام
مرسی که بحث رو پیش می برید و تجربیاتتون رو مطرح می کنید. منم تازه شروع به کار کردم، امیدوارم بتونم تا اونجا که بتونم کمک کنم.
اما یه مشکلی پیش اومده ،من کابلها رو وصل کردم، البته قبلش درایور رو از سایت ST دانلود و نصب کردم، کامل هم شناخت. برنامه چشمک زن که روش هست هم کار کرد. وقتی پوش باتن آبی رو می زنم اونطور که بچه ها تو پستهای قبل گفتن مثل اینکه باید تبدیل به mouse بشه و روی برد هم نشون بده با led ها.
اما روی خود برد بسته به حرکتش درست led ها روشن میشن اما mouse اصلا حرکت نمی کنه ، انگار نه انگار که این برده هست.
روی لپتاپ دارم کار می کنم، سیستم عامل هم ویندوز 7 enterprise هست.
کسی می دونه چرا مثل mouse کار نمی کنه؟ خیلی حالم گرفته شد
سلام دوستان
بالاخره من هم فرصت پيدا كردم با اين برد فوق العاده و ميكروي فوق العاده اون كار كنم.
مثال هاي خوبي داره اما آدمو سردرگم ميكنه.
اين يه مثال ساده در مورد نحوه كار با gpio و تنظيمات مربوط به اون هستش.
ویرایش توسط sadmonew : 07-07-2012 در ساعت 11:28 دلیل: رفع اشكالات برنامه
_____________________________________
_____________________________________
سلام
من هم مدتی قبل یه برنامه ساده gpio انجام دادم البته به کمک دوستان. با رجیستر من فعلا راحت ترم تا cmsis . جوابم میداد. اسم رجیسترهای stm با lpc متفاوته و این باعث شد کلی وقتمون تلف بشه. ساده بود ولی گیر کار این بود که اول کار فعالش نکرده بودیم. ای بابا هر چی می گردم پیداش نمی کنم!!
سلام
اين يه نرم افزار پروگرمر(غير از نرم افزار STM32 ST-LINK Utility) هستش.
ازش استفاده كردم. كلي ميكروي STM32 رو ساپورت ميكنه.
اين لينك توضيحات: STVP - STMicroelectronics
لينك دانلود: http://www.st.com/internet/com/SOFTW.../sttoolset.zip
اينم دو تا عكس از محيط نرم افزار:
_____________________________________
_____________________________________
سلام مهندس زرکوبسلام
چه مزیت ها و معایبی داره؟ از خود کیل قابل تنظیمه که پروگرام بشه؟ و ...
به کجا رسیدی ؟
منم بعد از چند روز وقت کردم دوباره برم سراغ بوردم
داداش پروژت رو بزار ما هم استفاده کنیم (البته رجیستریشو)
من فعلا دارم با CMSIS درجا میزنم
این برنامه چرا کار نمیکنه ؟
همون برنامه مهندس صادق هست که برای GPIO نوشته بود کامپایل شد ولی روی بورد هیچی روشن نمیشه چرا ؟
کد:#include "stm32f4xx.h" #include "Delay_.h" #include "GPIO_init.h" #include "system_stm32f4xx.h" //---tavabe marbot be ijad taakhir(Delay)--- void Delay_ms(__IO uint32_t nTime) { TimingDelay = nTime; while(TimingDelay != 0); } void TimingDelay_Decrement(void) { if (TimingDelay != 0x00) { TimingDelay--; } } //----------------------------------------- int main(void) { // faalsazie clock porthaye A va B va C RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC|RCC_AHB1Periph_GPIOD|RCC_AHB1Periph_GPIOE, ENABLE); // tanzime porthaye A va B besorate khoroji ba drain baz GPIO_init_(); //tanzime systick besorate 1ms ||| SystemCoreClock=168000000Hz=168MHz SysTick_Config(SystemCoreClock / 1000); while(1){ GPIO_SetBits(GPIOA,GPIO_Pin_1); GPIO_SetBits(GPIOD,GPIO_Pin_15); Delay_ms(50000); GPIO_ResetBits(GPIOA,GPIO_Pin_1); GPIO_SetBits(GPIOD,GPIO_Pin_15); Delay_ms(5000); } }
*** اللّهم عجّل لولیک الفرج ***
سلام مهندس
البته ببخشيد دوستان عمدا اينو ناقص گذاشتم ببينم كدوم يك دوستان روي برد تست ميكنه و مشكل رو مطرح ميكنه. مثل اينكه شما فعلا روي برد تست كردين؟ البته شايد دوستاني باشن كه خودشون متوجه شدن، مشكل كجاست؟
مهندس قسمت مربوط به GPIO_OType رو با قراردادن مقدار GPIO_OType_PP تصحيح كنيد.
اميداورم دوستان ناراحت نشده باشن.
_____________________________________
_____________________________________
سلام مهندس ..
البته نمی دونم مشکلت چیه ولی همین طوری نگاه کردم .... تاخیرت یکی 50 ثانیه هست یکی 5 ثانیه !!
پین D15 هم هر دو دفعه SET شده .. toggle نشده !!
تابع gpio_init برای چیه ؟ اگه برای کانفیگ پورت هاست ببین خود اون تابع توش چی نوشته ..بالاش نوشته برای حالت open drain هست اگه پین ها رو به این صورت کانفیگ کنه فقط با مقاومت پول آپ روشن میشن ...
نه اتفاقا خوب شدالبته ببخشيد دوستان عمدا اينو ناقص گذاشتم ببينم كدوم يك دوستان روي برد تست ميكنه و مشكل رو مطرح ميكنه. مثل اينكه شما فعلا روي برد تست كردين؟ البته شايد دوستاني باشن كه خودشون متوجه شدن، مشكل كجاست؟
باعث شد من یه چیز دیگه رو هم بفهمم
فقط من تو پیدا کردن این چیزا یکم مشکل دارممهندس قسمت مربوط به GPIO_OType رو با قراردادن مقدار GPIO_OType_PP تصحيح كنيد.
منظورتون این قسمت بود
البته من هنوز تغییرش ندادم همین جوری بودکد:* @brief GPIO Output type enumeration */ typedef enum { GPIO_OType_PP = 0x00, GPIO_OType_OD = 0x01 }GPIOOType_TypeDef; #define IS_GPIO_OTYPE(OTYPE) (((OTYPE) == GPIO_OType_PP) || ((OTYPE) == GPIO_OType_OD))
این درسته دیگه ؟!!!
ولی برنامه همچنان جواب نمیده
مهندس نکنه غیر از این بازم حرکت زدی
*** اللّهم عجّل لولیک الفرج ***
_____________________________________
_____________________________________
سلام
من دستم بند یه چیز دیگه شده فعلا ولی برنامه GPIO را پیدا کردم:
[PHP]/* Includes ------------------------------------------------------------------*/
#include "stm32f4xx.h"
void delay(unsigned long i){
unsigned long j;
for (j=0;j<i;j++);
}
int main (void)
{
RCC->AHB1ENR = 0x00000008;
GPIOD->MODER = 0x55000000;
GPIOD->ODR = 0xF000; /* PD12 .. PD15 defined as Outputs */
GPIOD->BSRRL = 0xF000; /* turn off all the LEDs */
while(1)
{
GPIOD->BSRRH = 0xF000;
delay(10000000);
GPIOD->BSRRL = 0xF000;
delay(1000000);
}
}
[/PHP]
چهار تا led روی برد را خاموش روشن میکنه.
خوب اینم دست نزده اینطوریه که...!!!
من چیشو تغیر بدم .!!!؟؟؟کد:GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
*** اللّهم عجّل لولیک الفرج ***
مهندس ال.اي.دي هاي رو برد منظورم اون 4 تا ال.اي.دي اطراف سنسور شتاب سنج، به پين هاي pd.12...pd.15 وصل شدن و ld7 به pa.9 وصل شده.
_____________________________________
_____________________________________
درسته این قسمتشو توجیه شدم
ولی اون برنامه که شما گذاشته بودید رو من دیدم ولی خبری از اون حرکتی که میگفتید پیدا نکردم
همه چی ظاهرا درسته
برنامه رو هم کامپایل و پروگرم میکنم ولی روی بورد چیزی نشون نمیده
این میتونه باشه ؟!!!بالاش نوشته برای حالت open drain هست اگه پین ها رو به این صورت کانفیگ کنه فقط با مقاومت پول آپ روشن میشن ...
هدر GPIO_init.h هم که برای usart و tft lcd ، من چیزی در اون زمینه نیافتم
*** اللّهم عجّل لولیک الفرج ***