سطحي و كار راه انداز
دقيق و حرفه اي
_____________________________________
_____________________________________
سلام به همه دوستان کسی میدونه چطور میشه با توابع fat یه رشته رو از روی اس دی کارت با اینترفیس sdio خوند و اونو ذخیرش کرد بعدش رو ال سی نمایشش داد من با تبدیل عکس به فایل هدر اونو میخوام رو اس دی ذخیره کنم مثلا یه هدری به اسم picture.h بعدش تابعی باشه که با فراخونیش بیاد با استفاده از سخت افزار sdio بیاد اون هدر رو تو اس دی کارت پیدا کنه بعدش تک تک درایه های اون هدر رو تو یه متغیر 32 بیتی بریزه و من با یه تابع بیام این پیکسلو رو ال سی دیم نمایش بدم ممنون میشم اگه کسی در این مورد میتونه کمکم کنه البته من اینترفیسم پورت sdio هستش برای پورت spi مثال زیاده ولی کار با این پورت sdio یکم مشکله
در واقع هدر من برای عکسا مثل زیره من باید تک تک درایه های این رشته رو با تابع
void SSD1963_SetPixel(int x, int y, unsigned long color)
نمایشش میدمش
picture.h
{
0x23df4a,
0x568df3,
.
.
.
.
.
.
}
دوستان میشه کل برنامه های این تاپیک رو که با keil نوشته شده و جواب داده رو تو یه فایل RAR بزارید تا همه استفاده کنند
خیلی خیلی تاپیک طولانی شده و واقعا گیج کننده
سلام جناب sigma-mx
تو پست 16 شما نوشتید:
GPIOB -> BSRR = 0x11110000
بیتهای 31 و 27 و 23 و 19 رو ریست می کنه .
فکر کنم بیتهای 28 و 24 و 20 و 16 رو ریست میکنه به نظرتون اشتباه میکنم؟
دوستان عزیز sigma-mx و do_loop شما تقریبا همیشه تاپیک رو دنبال کردید
میشه لطف کنید همه برنامه های این تاپیک رو تو یه فایل زیپ بزارید اینجا
سلام خواهشم میکنم جناب sigma-mx
میگم کاش این اموزشها که پراکنده هست رو تو قالب pdf به صورت منظم رو سایت بذارید
سلام میشه اموزش قسمت تایمر و وقفه های تایمر رو بذارید
سلام
من برای ایجاد پروژه از همون template که یکی از دوستان داده بودند استفاده کردم و راحت تونستم با gpio و lcd کاراکتری کار کنم ولی حالا که میخوام از usart استفاده کنم ارور میده که error رو ضمیمه کردم
[PHP]#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_usart.h"
#include "delay.h"
#include "lcd4bit.h"
int main(void)
{
//--------------------------------------------------------------------
USART_InitStructure.USART_BaudRate = 115200;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No ;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART1, &USART_InitStructure);
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
USART_Cmd(USART1, ENABLE);
//---------------------------------------------------------------------------------
lcd_init();
lcd_putsf("xyz");
while (1)
{
}
}
[/PHP]توی قسمت define هم کد مربوطه رو قرار دادم :»
[PHP] USE_STDPERIPH_DRIVER, STM32F10X_MD,_GPIO,_USART[/PHP]
این error رو میده :
[PHP]..\Source\main.c(11): error: #20: identifier "USART_InitStructure" is undefined
..\Source\main.c: USART_InitStructure.USART_BaudRate = 115200; [/PHP]ممنون میشم من رو راهنمایی کنید /
سلام دوست عزیز
فراموش کردین متغیر USART_InitStructure تعریف کنید
پس برای تعریف به این صورت عمل کنید.
کد:USART_InitTypeDef USART_InitStructure;
_____________________________________
_____________________________________
با تشکر از پاسختون ، و شرمنده از اینکه بازهم سوال جدیدی رو مطرح میکنم
میخوام از وقفه دریافت uart1 استفاده کنم
تنظیمات مربوط به وقفه رو به این شکل انجام دادم .
[PHP]void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
#ifdef VECT_TAB_RAM
/* Set the Vector Table base location at 0x20000000 */
NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else /* VECT_TAB_FLASH */
/* Set the Vector Table base location at 0x08000000 */
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
#endif
//-------------------uart recive int config ---------------------------------
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriori ty = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}[/PHP]و IRQHandler رو هم فقط گفتم با وقفه پورت سریال وضعیت led عوض بشه.
[PHP]void USART1_IRQHandler(void)
{
int data;
LED2=!LED2;
if(USART_GetITStatus(USART1, USART_IT_RXNE))
{
lcd_puts(data);
LED2=!LED2;
}
}[/PHP]
برنامه به خوبی کمپایل میشه اما هیچ نشونه ای از اینکه به زیر برنامه وقفه بره توی خروجی دیده نمیشه !!
سلام دوست عزیز
خواهش میکنم
به جای استفاده از EXTI0_IRQn باید از عبارت USART1_IRQn استفاده کنید تا وقفه عمومی یوزارت فعال بشه.
_____________________________________
_____________________________________
sadmonew مرسی که پاسخ دادید واقعا محبت دارید .
من توی زیر برنامه وقفه رشته رو دریافت میکنم تابه cr برسه بعدش همون رشته ای رو که دریافت کردم دوباره میفرستم روی پورت سریال و روی lcd نمایش میدم . نکته ای که وجود داره کارکترهای موجود در رشته روی پورت سریال به خوبی نمایش داده میشه ولی روی lcd هیچ چیزی نمایش داده نمیشه
[PHP]void USART1_IRQHandler(void)
{
if( USART_GetITStatus(USART1, USART_IT_RXNE) )
{
cnt = 0;
t = USART1->DR;
if( t != 0x0a)
{
received_string[cnt] = t;
cnt++;
}
else
{
cnt = 0;
lcd_clear();
for (i=0;i<16;i++) // 16 Character Print
{
lcd_putchar(received_string[i]); // Print Byte to LCD
}
USART_puts(USART1, received_string);
}
}
}[/PHP]با تابع putsf هم تست کردم دیدم جواب نداد ،
سلام
اعدادی که رو پورت سریال میبینید چه اعدادی هستن؟ لطفا اینجا بذارین.
متغیر received_string به چه صورت تعریف کردین؟
حلقه فورو بردارین و اینجوری بنویسید:
کد:lcd_putsf(received_string);
_____________________________________
_____________________________________
سلام
متغییر ها رو به این شکا تعریف کردم
[PHP]char received_string[16];
char buffer_string[20];[/PHP]یک چیزی که برای من جالبه اینه که وقتی من lcd_putsf رو استفاده میکنم هیچ چیزی رو نشون نمیده ولی همین قدر که اون رو توی یک حلقه for بگذارم که حداقل 2 بار تکرار بشه روی lcd به خوبی نشون میده .
[PHP]void USART1_IRQHandler(void)
{
if( USART_GetITStatus(USART1, USART_IT_RXNE) )
{
static uint8_t cnt = 0;
char t = USART1->DR;
if( t != 0x0a) {
received_string[cnt] = t;
cnt++;
}
else
{
sprintf(buffer_string,"B=%s",received_string);
cnt = 0;
lcd_clear();
lcd_cursor_home();
for (i=0;i<2;i++)
{
lcd_cursor_home();
lcd_putsf(buffer_string);
}
USART_puts(USART1, buffer_string);
}
}
[/PHP]الان اگر ali رو ارسال کنم b=ali پورت سریال در جواب b=ali رو میفرسته و b=ali و چند تا کاراکتر خرچنگی روی lcd نشون میده که فکر میکنم به خاطر اینکه null آخر رشته نگذاشتم این جوری شده
چرا تابع lcd_pusf رو باید دوبار بنویسم ؟
این هم برنامه تابع putsf
[PHP]void lcd_putsf(char* str)
{
int i;
for (i=0;i<16;i++)
{
lcd_putchar(str[i]);
}
}}[/PHP]
سلام
دوستان بيش از يكسال از شروع آموزش و استفاده از اين ميكرو گذشته و سال 91 هم رو به پايان هست
بعضي از دوستان كه از اساتيد قديم بودند خيلي سريع در استفاده و كار با اين ميكرو مهارت كسب كردند و بعضي ها هم به علت مشكلات يا تنبلي يا ضعف در بعضي مسائل چيز زيادي ياد نگرفتند
اگر دوستان و مديران محترم صلاح بدانند .. خلاصه عملكرد اين يك سال به صورت مجله آموزشي يا يك جزوه نسبتا قوي براي اموزش اين سري ميكروها تهيه و انتشار داده بشود.
اساتيد محترم:
آقا سعید شریفیان
آقا پوریا علیزاده
آقاي محمدرضا حسینا
آقا مصطفی
آقا محمد قديمي
آقا حسين
آقا صادق محمدي
آقا پیمان غلامی
دوستاني كه اسمشون رو فراموش كردم يا كامل يادم نبود ببخشند
با تشكر از همه دوستان
سلام مهندس
خوبی؟
واقعا" چـــــــقـــــــدر سریع گذشت.
بله مهندس این تاپیک خیلی مطالب خوبی داره اما حیف که پراکندس و برای شخصی که اولین مرتبه میخواد این همه پست رو بخونه، گیج میشه!
منم موافقم که این تاپیک یه سروسامونی بگیره!
اما مشکل اینجاس که کی میخواد وقت بذاره و مطالبو جمعو جور کنه!
_____________________________________
_____________________________________
آقا صادق سلام
خوب و خوشيد .. از كارهات خبر بده چه ميكني خوشحال ميشيم ..
چه ميكني
دوستان و اساتيد كسي هست قسمتي از كار جمع آوري را به عهده بگيرد
دو سه فصل اول نياز به معرفي ميكرو سخت افزار .. بعد انواع روشهاي برنامه نويسي بعد شروع به آموزش دستورات و انجام مثالهاي كاربردي هستم
انشا ا.. اين قسمت پيش بره... سازنده هاي اون طرف انقدر سريع مدلهاي جديد توليد ميكنند ما در يادگيري حداقل سستي نكنيم
شاد باشيم
کسی مثال برای RTC داره که تست شده باشه ؟
منو دیگه داره کلافه میکنه ...
*** اللّهم عجّل لولیک الفرج ***
بله این یه کار لازمیه . البته من یه همچین کاری برای تایپیک برد دیسکاوری و cmsis کردم خیلی هم استقبال نشد! باید تایپیکش جدا باشه و مهم بشه
ایـــــــــران میـــــــکرو ™ - مشاهده یک موضوع - شروع کار با برد Discovery kit for STM32 F4 series - with STM32F407 MCU
ایـــــــــران میـــــــکرو ™ - مشاهده یک موضوع - تشریح کامل دستورات cmsisبرای lpc1768
آقا صادق خودت آستین بالا بزن