PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : شروع آموزش stm32 بر پایه برد سفارشی



صفحه ها : 1 2 3 4 [5]

ali_rostami_7
17-12-2014, 06:06
چون پسر خوبی هستی جواب میدما:)
:hi:
اینم یه عکس دسته جمعی از دو رجیستر:mrgreen:You can see links before reply
لاجیک متاسفانه فعلا ندارم ولی انشالله به زودی یکی دستم میاد
You can see links before reply (You can see links before reply)

rozeh
17-12-2014, 17:32
:hi:
اینم یه عکس دسته جمعی از دو رجیستر:mrgreen:You can see links before reply
لاجیک متاسفانه فعلا ندارم ولی انشالله به زودی یکی دستم میاد
You can see links before reply (You can see links before reply)

نه ببین، شما الان یه مقدار بی دقتی کردی. من حرفی از مقدار ریجسترهای پورت A زدم؟ شما هم خودتو به زحمت می اندازی و هم منو. اینه که یه مقدار دقت کن. من گفتم چی ببین:


توی دیباگ از مقدار ریجسترهای rcc عکس بگیر و بذار اینجا. واسه هر دو که انجام دادی

پس یعنی از ریجسترهای RCC عکس بگیر. هم توی 72مگاهرتز که راه انداختی(یعنی یکی در حالت 72 مگاهرتز) و هم این 8مگاهرتز که میگی(یک هم واسه حالت 8 مگ).
الان این چیزی که گذاشتی واسه 72مگ هستش. درسته؟
راستی هر دو چشمک هم میزنه دیگه؟ یه وقت فقط روشن نباشه فقط و بگی کار میکنه. هر دو برنامه که میگی باید چشمک بزنه. کدوم سریعتر میزنه؟ واسه هر دو کد فایل main رو هم بذار. منظورم کد اصلی هستش.

dostajn
10-02-2015, 09:45
سلام مهندس
تو تابع I2C_Configuration
قسمت I2C_Ack_Enable را به I2C_Ack_Disable تغییر بده.

dostajn
10-02-2015, 12:02
سلام مهندس
تو تابع I2C_Configuration
قسمت I2C_Ack_Enable را به I2C_Ack_Disable تغییر بده.
سلام جناب sadmonew عزیز

فکر کنم پست من پاک شد...:D2:D2
امکان داره بیشتر توضیح بدید ؟ اگر ack غیر فعال بشه طبق دیتاشیت eeprom، بعد از دریافت هر بایت از حافظه، میکرو master باید ask بده درسته! احتمالا خودم باید با تابع I2C_AcknowledgeConfig (file:///C:/CooCox/CoIDE/repo/Components/453_I2C/doxygen/group__I2C__Private__Functions.html#ga7bb44e894d68 a7991f564c43fb187486) فعال کنم:


Bit 10 ACK: Acknowledge enable
This bit is set and cleared by software and cleared by hardware when PE=0.
0: No acknowledge returned
1: Acknowledge returned after a byte is received (matched address or data)

اما مشکل من اینه که اگر پایه های PA6/7 کاملا آزاد باشند(از توباس بیان بیرون) میکرو مستر برای داده ای که ارسال کرده ACK میگیره !!!
درثانی مشکل مهمتر اینه که اگر میکرو توی باس باشه توی حلقه زیر میمونه:


while(!I2C_CheckEvent(I2C_EE, I2C_EVENT_MASTER_MODE_SELECT));

ahravan
12-02-2015, 17:24
سلام، خیلی خوشحال شدم چنین آموزشی در حال به اشتراک گذاری توی انجمنه !!
قبلا هم به دوستان اعلام کرده بوده به اشتراک گذاری توی سایت به جای فروم ساختار منسجم تری خواهد داشت

hajar1272
14-03-2015, 16:01
سلام .من تازه stmرو شروع کردم اول اینکه می خواستم به خاطر مثال ها و اموزش های خوبی که گذاشتین از همه تون تشکر کنم. و اینکه خواهش می کنم یه نفر به من کمک کنه من تو قسمت adc مشکل دارم اصلا واحد adc این سری میکروکنترلرها خیلی متفاوت هست من با سریstm32f103zet دارم کار میکنم از یه طرف داخل هدر smsis اون از adc1,2,3 صحبت شده از اون طرف 17 کانال براش تعریف شده اصلا درک نمی کنم رو پایه های شماتیک ای سی هم یه سری پایه ها با عنوان adc123 و یه سری adc12 و یه سری adc13 معرفی شده ؟؟؟؟:unh:و اینکه یه نفر برا من توضیح بده این پارامترهای ADC_ModeوADC_ScanConvMode وADC_ContinuousConvMode وADC_ExternalTrigConv و ADC_DataAlign و ADC_NbrOfChannel اینا هرکدوم چه کاربردهایی داره و حالتهای مختلفشون چه معنی دارن:(

Doloop
15-03-2015, 03:21
سلام

ببین این لینک بدردت میخوره؟

فایل های کاربران: Doloop ● آپلود گوگل (You can see links before reply)

hajar1272
25-03-2015, 13:22
سلام سال نو مبارک . می دونم الان وقت سوال پرسیدن نیست ولی دیگه خسته شدم از بس تو نت گشتم می شه یه نفر به من کمک کنه من از این کتابخانه lcdn96 شما استفاده میکنم همه چی درسته فقط تو قسمت نمایش عکس مشکل دارم عکسی که با avr راحت نمایش میدادم الان همش خط خطی نشون می ده ؟؟؟:unh:چه جوری رو حافظه فلش ببرمش؟؟ ممکنه مشکل همین باشه ؟؟

ehsanbagheri
25-03-2015, 21:38
اگر از lcdرافیکی زیاد استفاده می کنید حتما حتما. Stemwin یا همون emwin رو یاد بگیرید خیلی سریع یاد میگیرید چون ساده و روان ولی بسیار قدرت مند هست و با هر میکرویی کار میکنه حتا avr

hajar1272
25-03-2015, 22:08
مرسی حتما کار می کنم ولی من تابع مربوط به نمایش عکس رو عوض کردم و الان lcd یم عکسو قشنگ نشون می ده البته هنوز یه کم یه جاهایی ایراد داره وسط صفحه یه کمی نویز داره :0013: ولی کیفیت عالیه ... خیلی خوشحالم دوروزه گیرم به این lcd .. دوست دارم سورس رو بزارم که اگر کسی مثل من مشکل داشت ازش استفاده کنه ولی متاسفانه جای اپلود فایلشو ندارم :sa:

ehsanbagheri
25-03-2015, 23:50
خيلي خويه كه كارتون راه افتاده

داخل اين سايت آپلود كنيد
Dropbox.com

hajar1272
27-03-2015, 20:32
سلام این سایتی که شما گفتین که خیلی سخت بودولی از اینجا می شه گرفتش دانلود (You can see links before reply)

iriana
23-04-2015, 10:35
سلام بر مهندسین عزیز ، یک سوال ذهن من و همکارم رو خیلی درگیر کرده هرجا هم گشتیم چیزی راجبش نیافتیم
این خط دقیقا چیکار میکنه؟ میدونم که کلا واسه معرفی رجیسترهاست ولی دقیق میخوام بدونم.


#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE)


GPIO_TypeDef که یک استراکچر هست و GPIOA_BASE هم آدرس شروع رجیسترای GPIOA هست. اینا دقیقا چطور به هم مرتبط میشن؟ ستاره (*) اینجا چه کاری انجام میده؟

اینم تعریف استراکچر GPIO_TypeDef

typedef struct
{
__IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */
__IO uint32_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */
__IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */
__IO uint32_t PUPDR; /*!< GPIO port pull-up/pull-down register, Address offset: 0x0C */
__IO uint32_t IDR; /*!< GPIO port input data register, Address offset: 0x10 */
__IO uint32_t ODR; /*!< GPIO port output data register, Address offset: 0x14 */
__IO uint16_t BSRRL; /*!< GPIO port bit set/reset low register, Address offset: 0x18 */
__IO uint16_t BSRRH; /*!< GPIO port bit set/reset high register, Address offset: 0x1A */
__IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */
__IO uint32_t AFR[2]; /*!< GPIO alternate function registers, Address offset: 0x20-0x24 */
} GPIO_TypeDef;




* به آدرس اشاره میکنه
حالا فرض کنین آدرس شما یک استراکچر باشه .خوب استراکچر هم مجموعه ای از متغیر هاست که توی RAM بصورت متوالی تعریف میشن
مثلا #define GPIOA ((GPIO_TypeDef *) GPIOA_BASE هرجا شما بنویسین GPIOA آدرس پورت A درون سخت افزار که بصورت یه ساختار تعریف شده دسترسی دارین
توحه کنین برای دسترسی به عناصر GPIOA باید از <- استفاده کنین و GPIOA یک پوینتر به ساختاریه که بالا تعریف شده.

- - - Updated - - -


اگر از lcdرافیکی زیاد استفاده می کنید حتما حتما. Stemwin یا همون emwin رو یاد بگیرید خیلی سریع یاد میگیرید چون ساده و روان ولی بسیار قدرت مند هست و با هر میکرویی کار میکنه حتا avr

emwin برای st زو کسی کار کرده؟
سخت افزار باید چجوری باشه RAM و ROM خارجی لازمه؟

jik
04-05-2015, 20:55
چرا دستور printf کار نمیکنه ؟
برنامه وقتی printf رو کامنت میکنم کار میکنه ولی وقتی printf باشه کار نمیکنه
کسی مثالی داره که رو برد سفارشی printf کار کنه ؟

hajar1272
04-05-2015, 22:40
سلام . printf رو واسه چی لازم دارین ؟ برا uart؟ اگر برا سریال می خواین باید براش تعریفش کنین

jik
04-05-2015, 22:53
سلام . printf رو واسه چی لازم دارین ؟ برا uart؟ اگر برا سریال می خواین باید براش تعریفش کنین
بله برای usart1
چطور باید تعریف کنم ؟؟
scanf هم کار نمیکنه

hajar1272
05-05-2015, 00:00
سلام

ببین این لینک بدردت میخوره؟

فایل های کاربران: Doloop ● آپلود گوگل (You can see links before reply)
تو این لینک مثالهای خوبی هست فکر کنم توش باشه یه مثال هست واسه rtc که نمایشگرش uart هست تو اون از printf استفاده شده

jik
05-05-2015, 00:31
تو این لینک مثالهای خوبی هست فکر کنم توش باشه یه مثال هست واسه rtc که نمایشگرش uart هست تو اون از printf استفاده شده

گشتم نبود

hajar1272
05-05-2015, 00:53
اینجا رو هم یه نگاه بکنین فکر کنم همون rtc اخری باشه لینک (You can see links before reply)

jik
05-05-2015, 12:15
اینجا رو هم یه نگاه بکنین فکر کنم همون rtc اخری باشه لینک (You can see links before reply)
ممنون
printf تو اون پروزه کار میکنه ولی scanf کار نمیکنه
برای scanf باید چیکار کنم ؟؟

hajar1272
05-05-2015, 12:27
درمورد اصرارتون برای اینکه از printf و scanf استفاده کنین تعجب می کنم شما وقتی قرار هست با پورت سریال کار کنین دو تا تابع لازم دارین یکی برای دریافت ویکی برای ارسال حالا تو کتابخانه uart کدویزن این مسئله تعریف شده که این دوتاتابع برا ارسال ودریافت باشه می دونین که هردو از تابع های زبان c هست حالا یا شما باید تو stm تعریف کنی که این دوتا تابع برا ارسال و دریافته ویا از توابع مشابه موجود استفاده کنید

jik
05-05-2015, 13:24
درمورد اصرارتون برای اینکه از printf و scanf استفاده کنین تعجب می کنم شما وقتی قرار هست با پورت سریال کار کنین دو تا تابع لازم دارین یکی برای دریافت ویکی برای ارسال حالا تو کتابخانه uart کدویزن این مسئله تعریف شده که این دوتاتابع برا ارسال ودریافت باشه می دونین که هردو از تابع های زبان c هست حالا یا شما باید تو stm تعریف کنی که این دوتا تابع برا ارسال و دریافته ویا از توابع مشابه موجود استفاده کنید
میخوام یه متن رو از پورت سریال بگیرم که طولش هم معلوم نیست
لطفا راهنمایی کنید چطور میتونم اینکار رو انجام بدم

avr_1360
05-05-2015, 14:34
سلام.
یه برنامه تایمر نوشتم.
اما نمیدونم چرا وقفه سرریز تایمر کار نمیکنه.

#include "stm32f10x.h"

void TIM1_UP_IRQHandler (void) {

if ((TIM1->SR & 0x0001) != 0) { // check interrupt source
TIM1->SR &= ~(1<<0); // clear UIF flag
}
}

int main(void) {

RCC->APB2ENR=RCC_APB2ENR_IOPBEN | RCC_APB2ENR_IOPAEN | RCC_APB2ENR_IOPCEN | RCC_APB2ENR_TIM1EN ; // GPIOA,b,c Enable Clock

TIM1->CR2=0X100;
TIM1->PSC=50000;
TIM1->ARR=0x7ff;
TIM1->CR1= TIM_CR1_CEN;
TIM1->DIER= TIM_DIER_COMIE | TIM_DIER_TIE | TIM_DIER_UIE | TIM_DIER_CC1IE | TIM_DIER_BIE; //enable interrupt


//--------------------------------------------------------------------------------------------------------------------
GPIOB->CRL=1;
GPIOB->ODR=0; ////////////////--------=============================
while(1){


}

}

sadmonew
05-05-2015, 15:43
سلام دوست عزیز
شما وقفه عمومی تایمر را فعال نکردی.
تو دستورات cmsis تابعی هست به اسم NVIC_Init، کارش اینه که وقفه عمومی تایمر را فعال میکنه.

avr_1360
05-05-2015, 16:47
تشکر.
این وقفه عمومیو بطور مستقیم باید از کجا فعال کنم؟

jik
07-05-2015, 11:50
میخوام یه متن رو از پورت سریال بگیرم که طولش هم معلوم نیست
لطفا راهنمایی کنید چطور میتونم اینکار رو انجام بدم
دوستان لطفا راهنمایی کنید

برای ارسال و دریافت usart چطور میتونم از dma استفاده کنم ؟
لطفا یه مثال براش بزارید

rozeh
07-05-2015, 15:45
تشکر.
این وقفه عمومیو بطور مستقیم باید از کجا فعال کنم؟
جایی وجود نداره! یه چیزی وجود داره. یه ساختار هست که باید مقدار دهی بکنیش و بعد با تابع اینیشیال ریجسترهاش رو مقدار دهی کنی که با دادن آدرس ساختار به تابع ذکر شده ریجسترهای مقدار دهی خواهند شد. دنبال مثال توی نت یا نمونه مثال های st بگردید و بهشون نگاه کنید. همه چیز رو متوجه میشید.


- - - Updated - - -


تشکر.
این وقفه عمومیو بطور مستقیم باید از کجا فعال کنم؟


دوستان لطفا راهنمایی کنید

برای ارسال و دریافت usart چطور میتونم از dma استفاده کنم ؟
لطفا یه مثال براش بزارید

خیلی گسترده هستش. نمیشه به این راحتی توضیح داد.

jik
07-05-2015, 16:33
- - - Updated - - -

خیلی گسترده هستش. نمیشه به این راحتی توضیح داد.
امکانش هست یه مثال بزارید

mzarkoob
07-05-2015, 17:19
برای ارسال و دریافت usart چطور میتونم از dma استفاده کنم ؟
لمبدا را باید پریفرال usart قرار بدهید و مقصد هم ادرس رم. سایز و حجم و .. را هم مشخص کنید و استارت کار
تا به اندازه مرد نظر کاراکتر اومد یه وقفه میده
cpu هم این مدت انگار نه انگار که این انتقال دیتا داره انجام میشه به کار خودش میرسه:0013:

rozeh
07-05-2015, 18:11
امکانش هست یه مثال بزارید

کتابخونه استاندارد stm32 رو دانلود کنید. توی مثال ها، در بخش usart اتفاقا دو مثال واسه dma داره.

jik
07-05-2015, 23:34
مبدا را باید پریفرال usart قرار بدهید و مقصد هم ادرس رم. سایز و حجم و .. را هم مشخص کنید و استارت کار
تا به اندازه مرد نظر کاراکتر اومد یه وقفه میده
cpu هم این مدت انگار نه انگار که این انتقال دیتا داره انجام میشه به کار خودش میرسه:0013:

امکانش هست یه مثال برای برد سفارشی بزارید
من نتونستم راش بندازم

pooriya
08-05-2015, 02:56
با سلام
کار با واحد DMA مستلزم تسلط خوب یا حداقل نسبی بر روی آن است.خوشبختانه میکروکنترولر های خانواده STM32 منابع و سورس های زیادی در اینترنت دارند.که با کمی جستجو می توانید مثال های خوب و کاربردی پیدا کنید.
اگر هدف دیدن یه مثال یاهدر راه اندازی می باشد لینک های مثل لینک زیر می تواند مفید باشد
Forum - UART with DMA mode - STMicroelectronics
(You can see links before reply 2Fmcu%2FLists%2FSTM32Discovery%2FUART%20with%20DMA %20mode&FolderCTID=0x01200200770978C69A1141439FE559EB459D7 5800084C20D8867EAD444A5987D47BE638E0F&currentviews=11969)

avr_1360
09-05-2015, 23:00
سلام مجدد.
این برنامه رو برای کپچر نوشتم اما کار نمیکنه.کسی میتونه کمکم کنه

#include "stm32f10x.h"
char i=0;

void TIM1_CC_IRQHandler (void) {

if ((TIM1->SR & 0x0001) != 0) { // check interrupt source
i=~i;
TIM1->SR &= ~(1<<0); // clear UIF flag

GPIOB->ODR=i;
}
}



int main(void) {

RCC->APB2ENR=RCC_APB2ENR_IOPBEN | RCC_APB2ENR_IOPAEN | RCC_APB2ENR_TIM1EN ;//| RCC_APB2ENR_AFIOEN ; // GPIOA,b,c Enable Clock

GPIOA->CRH = GPIO_CRH_CNF8_0; //INPUT FLOAT

TIM1->CCMR1= TIM_CCMR1_IC1F_0 | TIM_CCMR1_IC1F_1 ; //enable cap1
TIM1->CCER = TIM_CCER_CC2P | TIM_CCER_CC1E;
TIM1->DIER= TIM_DIER_CC1IE ; //enable interrupt

TIM1->SMCR = TIM_SMCR_TS_2 | TIM_SMCR_TS_0 | TIM_SMCR_SMS_2;

TIM1->CCMR1|=TIM_CCMR1_CC1S_0 | TIM_CCMR1_CC2S_1 ;
TIM1->CR1= TIM_CR1_CEN;//////////////////////////////////////////////////////////////


NVIC_EnableIRQ(TIM1_CC_IRQn);//EXTI15_10_IRQn
while(1){



}

}

pooriya
10-05-2015, 22:13
با سلام
با توجه به تنظیمات تایمر در مد کپچر که انجام دادید.یک سری از تنظیمات نا درست و ناقص می باشد.لذا پیشنهاد من اینه که با توابع cmsis یک بار راه اندازی و تست کنید در صورت موفقیت با استفاده از تنظیمات رجیستر به صورت دستی انجام دهید.
یک نمونه مثال config تایمر در مد iput capture با استفاده از توابع STM32F10x_StdPeriph:



/** ************************************************** ****************************
* @file TIM/InputCapture/main.c
* @author MCD Application Team
* @version V3.5.0
* @date 08-April-2011
* @brief Main program body
************************************************** ****************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
* TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
* DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
* FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
* CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*
* <h2><center>&copy; COPYRIGHT 2011 STMicroelectronics</center></h2>
************************************************** ****************************
*/

/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"

/** @addtogroup STM32F10x_StdPeriph_Examples
* @{
*/

/** @addtogroup TIM_Input_Capture
* @{
*/

/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
TIM_ICInitTypeDef TIM_ICInitStructure;

/* Private function prototypes -----------------------------------------------*/
void RCC_Configuration(void);
void GPIO_Configuration(void);
void NVIC_Configuration(void);

/* Private functions ---------------------------------------------------------*/

/**
* @brief Main program
* @param None
* @retval None
*/
int main(void)
{
/*!< At this stage the microcontroller clock setting is already configured,
this is done through SystemInit() function which is called from startup
file (startup_stm32f10x_xx.s) before to branch to application main.
To reconfigure the default setting of SystemInit() function, refer to
system_stm32f10x.c file
*/

/* System Clocks Configuration */
RCC_Configuration();

/* NVIC configuration */
NVIC_Configuration();

/* Configure the GPIO ports */
GPIO_Configuration();

/* TIM3 configuration: Input Capture mode ---------------------
The external signal is connected to TIM3 CH2 pin (PA.07)
The Rising edge is used as active edge,
The TIM3 CCR2 is used to compute the frequency value
------------------------------------------------------------ */

TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
TIM_ICInitStructure.TIM_ICFilter = 0x0;

TIM_ICInit(TIM3, &TIM_ICInitStructure);

/* TIM enable counter */
TIM_Cmd(TIM3, ENABLE);

/* Enable the CC2 Interrupt Request */
TIM_ITConfig(TIM3, TIM_IT_CC2, ENABLE);

while (1);
}

/**
* @brief Configures the different system clocks.
* @param None
* @retval None
*/
void RCC_Configuration(void)
{
/* TIM3 clock enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

/* GPIOA and GPIOB clock enable */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
}

/**
* @brief Configure the GPIOD Pins.
* @param None
* @retval None
*/
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;

/* TIM3 channel 2 pin (PA.07) configuration */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure);
}

/**
* @brief Configure the nested vectored interrupt controller.
* @param None
* @retval None
*/
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;

/* Enable the TIM3 global Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriori ty = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}

#ifdef USE_FULL_ASSERT

/**
* @brief Reports the name of the source file and the source line number
* where the assert_param error has occurred.
* @param file: pointer to the source file name
* @param line: assert_param error line source number
* @retval None
*/
void assert_failed(uint8_t* file, uint32_t line)
{
/* User can add his own implementation to report the file name and line number,
ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */

while (1)
{}
}

#endif

/**
* @}
*/

/**
* @}
*/
/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/

avr_1360
11-05-2015, 01:51
اقا پوریا تشکر بابت فایل cmsis اما این فایل توی کیل من پر از اروره.
این فایلو خودت تست زدی؟

avr_1360
11-05-2015, 15:55
اقا کسی میتونه اطلاعاتی در مورد nvic بهم بده و چطوری میشه اونو مقدار دهی کرد.

mzarkoob
11-05-2015, 18:51
ساده مثلا با این دستور زیر روال وقفه 0

NVIC_EnableIRQ(EXTI0_IRQn);

hajar1272
22-05-2015, 23:29
سلام . من می خوام با ای سی stm32f103ret6 کار کنم ولی یه مشکلی که دارم نمی دونم کدوم پایه اش adc کدوم uart سرچ که می کنم همه user manul ها وdatasheet ها اطلاعات کلی درمورد سری 103 دادن . به اسم pinout و عناوین دیگم که سرچ می کنم چیزی پیدا نکردم :(شماتیکیم براپروتل پیدا نکردم

mzarkoob
23-05-2015, 00:28
یک نرم افزار است کار را آسون تر می کنه در اینکه هر پریفرالی چه پایه هایی بهش اختصاص داده شده:
You can see links before reply

ehsanbagheri
23-05-2015, 00:31
سلام . من می خوام با ای سی stm32f103ret6 کار کنم ولی یه مشکلی که دارم نمی دونم کدوم پایه اش adc کدوم uart سرچ که می کنم همه user manul ها وdatasheet ها اطلاعات کلی درمورد سری 103 دادن . به اسم pinout و عناوین دیگم که سرچ می کنم چیزی پیدا نکردم :(شماتیکیم براپروتل پیدا نکردم
سلام
نرم افزار stm32cubemx زو دانلود کن و نصب کن هم میتونی کاربرد پایه ها رو ببینی و هم ابن که پروژه رو باهاش درست کنی تمام تنظیمات رو برات انجام میده و با همه کامپایلر ها سازگار هست
STM32CubeMX STM32Cube initialization code generator (UM1718) - STMicroelectronics (You can see links before reply)

hajar1272
23-05-2015, 00:46
اقای باقری و اقای زرکوب از راهنماییتون خیلی متشکرم :018:دانلود می کنم امیدوارم کار کردن باهاش راحت باشه بازم ممنون

hajar1272
23-05-2015, 13:49
سلام من این نرم افزاری که شما فرمودین رو 2بار دانلود کردم ولی وقتی می خوام نصب کنم این پیام میادYou can see links before reply
اکی که می کنم میره تو یه سایت ودیگه هیچی ... نصب نمی شه :(

mzarkoob
23-05-2015, 14:38
داره میگه که نرم افزار java runtime environment را باید نصب کنید

hajar1272
23-05-2015, 15:58
ii998) شرمنده

kavireloot
26-05-2015, 12:44
سلام دوستان
من این تاپیک رو خوندم..
خیلی عالیییییییییییییییییییی بود واقعا
ممنون از آموزش هاتون
من دارم با میکروی stm32f103ret6 کار میکنم...
من این برنامه ی چشمک زن رو دادم به میکرو اما این ارور رو میده..
میشه راهنمایی کنین؟
Erase skipped!
Load "C:\\Users\\Asus\\Desktop\\micro\\Sample\\Sample\\g pio.axf"
Set JLink Project File to "C:\Users\Asus\Desktop\micro\Sample\Sample\JLinkSet tings.ini"
* JLink Info: Device "STM32F103RE" selected.

JLink info:
------------
DLL: V4.96h, compiled Feb 13 2015 22:12:13
Firmware: J-Link ARM V8 compiled Sep 22 2014 23:26:43
Hardware: V8.00
S/N : 58004321
Feature(s) : RDI, FlashBP, FlashDL, JFlash, GDB

* JLink Info: TotalIRLen = 9, IRPrint = 0x0011
* JLink Info: TotalIRLen = 9, IRPrint = 0x0011
* JLink Info: Found Cortex-M3 r1p1, Little endian.
* JLink Info: FPUnit: 6 code (BP) slots and 2 literal slots
* JLink Info: TPIU fitted.
* JLink Info: ETM fitted.
ROMTableAddr = 0xE00FF003

Target info:
------------
Device: STM32F103RE
VTarget = 2.504V
State of Pins:
TCK: 1, TDI: 0, TDO: 1, TMS: 0, TRES: 1, TRST: 1
Hardware-Breakpoints: 6
Software-Breakpoints: 8192
Watchpoints: 4
JTAG speed: 2000 kHz

No Algorithm found for: 08000000H - 08000387H
Erase skipped!

mzarkoob
26-05-2015, 13:09
الان خطا کجاشه دقیقا !؟

kavireloot
26-05-2015, 15:19
الان خطا کجاشه دقیقا !؟
من الان با jlink که وصل میشم به میکرو و گزینه download رو میزنم و برنامه gpio رو که در اوایل همین تاپیک برای میکروی stm...rbt6 گفته شده بود رو بهش میدم ، این ارور رو میده...البته من میکروم stm32f103ret6 هستش...






- - - Updated - - -

You can see links before reply

اینم عکس از ارور

hajar1272
26-05-2015, 15:39
سلام.
نوع ای سی تون رو تو قسمت تنظیمات نرم افزار به ret6 تغییر دادین ؟؟؟ به نظر می رسه تنظیماتتون درست نیست .

kavireloot
26-05-2015, 17:03
سلام.
نوع ای سی تون رو تو قسمت تنظیمات نرم افزار به ret6 تغییر دادین ؟؟؟ به نظر می رسه تنظیماتتون درست نیست .

چرا کرده بودم
درست شد...یادم رفته بود میکرو رو ادد کنم...
اما برنامه رو میریزم روی برد کار نمیکنه در حالی که توی کیل کار میکنه...
میشه اصلا برنامه ی reb6 رو به جای ret6 استفاده کرد؟

hajar1272
26-05-2015, 18:46
اره میشه احتمالا پایه هاشم یکی باشه . این نرم افزار که دوستان به من معرفی کردن رو بگیرین پایه هاشون رو چک کنین ببینین پایه هایی که تعریف کردین همون پایه های سخت افزارتون هست

kavireloot
29-05-2015, 13:32
اره میشه احتمالا پایه هاشم یکی باشه . این نرم افزار که دوستان به من معرفی کردن رو بگیرین پایه هاشون رو چک کنین ببینین پایه هایی که تعریف کردین همون پایه های سخت افزارتون هست

کدوم نرم افزار؟؟؟؟؟؟؟

hajar1272
29-05-2015, 16:38
سلام
نرم افزار stm32cubemx زو دانلود کن و نصب کن هم میتونی کاربرد پایه ها رو ببینی و هم ابن که پروژه رو باهاش درست کنی تمام تنظیمات رو برات انجام میده و با همه کامپایلر ها سازگار هست
STM32CubeMX STM32Cube initialization code generator (UM1718) - STMicroelectronics (You can see links before reply)
این نرم افزار . خیلی نرم افزار جالبیه و کارکردن هم باهاش خیلی راحته .واقعا از دوستانی که به من معرفیش کردن دوباره تشکر می کنم

hajar1272
30-05-2015, 15:13
سلام . من موقع پروگرم کردن ای سی stm32f103ret6 ام این error رو دارم
Cannot Write to RAM for Flash Algorithms !
کسی میدونه ماله چیه ؟؟؟:(

hajar1272
04-06-2015, 23:52
سلام . من موقع پروگرم کردن ای سی stm32f103ret6 ام این error رو دارم
Cannot Write to RAM for Flash Algorithms !
کسی میدونه ماله چیه ؟؟؟:(

گفتم جواب خودم رو بدم اگر کسی مشکل مشابه من رو پیدا کرد استفاده کنه یه کم این stmمنو غافل گیر کرد با lpc1768 که من تقریبا باهاش کار کرده بودم فرق می کنه یکی از تفاوت هاش اینه که یه پایه BOOT0 داره که تااون جایی که من متوجه شدم برای دسترسی به حافظه فلش میکروست این پایه رو برای اتصال جیلینک باید pull down کرد که من نمی دونستم .

hajar1272
05-06-2015, 00:01
میخوام یه متن رو از پورت سریال بگیرم که طولش هم معلوم نیست
لطفا راهنمایی کنید چطور میتونم اینکار رو انجام بدم

ببخشید که دیر جوابتون رو می دم حقیقتش تو اون موقع درگیر یه کاردیگه بودم و نتونستم براتون مثالی پیدا کنم الان خودم درگیر قسمت uart stm شدم گفتم یه مثال خوب بزارم که این قسمت تو فروم ناقص نباشه این مثال از مثال های خود این ای سی هست که هم استفاده از وقفه دریافت رو تو uart در بر می گیره و هم یه تابع خوب برای دریافت یا ارسال هر تعداد کاراکتر که بخواین در بر داره امیدوارم مفید باشه
لینک دانلود (You can see links before reply)

avr_1360
13-06-2015, 00:59
میشه همه پایه های میکرو رو بصورت وقفه خارجی تنظیم کرد؟یا محدودیت داره؟

Hadi_ghr_e
23-06-2015, 14:37
قبل از اينكه ادامه بدم لازمه يه چيزهايي رو حتما بگم. يه چيزي كه وقتمو تو روزهاي اول زياد گرفت(شايد تعجب كنيد) اين بود، كه چه فايل هايي رو به كتابخونه اضافه كنم و تازه بعد از اضافه كردن اون فايل ها ارور هارو چطور برطرف كنم.
1- براي شروع اول از همه بايد اين فايل زيپ شده كه حجمش 21.1 مگابايت هستش رو دانلود كنيد.
Error (You can see links before reply)
حتما دانلود كنيد. بسيار حياتيه؟!؟!؟!!!
2- بعد رفتم يه پروژه جديد تو Keil ساختم و تمام فايل هاي با پسوند c.* رو كه مسير اونها رو در زير ميبينيد به پروژه اضافه كردم(تو عكس نشون دادم.)

...\stm32f10x_stdperiph_lib\STM32F10x_StdPeriph_Li b_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src
...\stm32f10x_stdperiph_lib\STM32F10x_StdPeriph_Li b_V3.5.0\Libraries\CMSIS\CM3\CoreSupport
...\stm32f10x_stdperiph_lib\STM32F10x_StdPeriph_Li b_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM3 2F10x


سلام
تاپیک بسیار پر محتوایی هستش
به نوبه خودم تشکر میکنم
لینک بالا ارور داد
اصلاح کنید لطفا
روز خوش

skiboys
26-06-2015, 18:12
سلام خدمت دوستان گرامی طاعات و عبادات شما قبول باشه

می خواستم بپرسم دوستانی که با میکروهای stm32 کار می کنند مشکلی با شبیه سازی در کیل ندارند؟ با چه ورژنی از کیل می شه میکروهای این خانواده را به خوبی شبیه سازی و دیباگ کرد؟

ممنون

Hadi_ghr_e
26-06-2015, 20:38
سلام
میخوام برای استفاده از 8 کانال adc1 یه regular group درست کنم. چندتا سنسور مختلف دارم که به هر کدوم از کانالها وصل میشه و نمونه برداری میشن. با دستور زیر:

ADC_RegularChannelConfig(ADC1, ADC_Channel_17, 1, ADC_SampleTime_55Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_6, 2, ADC_SampleTime_55Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_16, 3, ADC_SampleTime_55Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 4, ADC_SampleTime_55Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_2, 5, ADC_SampleTime_55Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_3, 6, ADC_SampleTime_55Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_4, 7, ADC_SampleTime_55Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 8, ADC_SampleTime_55Cycles5);

درسته؟
سوال دومم اینه که مقدار adc رو با چه روشی باید بخونم و از کجا بفهمم مقدار خونده شده مربوط به کدوم کاناله؟

mzarkoob
26-06-2015, 22:59
برای چند کانال میشه در مد scan استفاده کرد و DMA به صورتی که از کانالها بریزه مرتب در یک متغییر ارایه ای که هر وقت خواستید مقدار آنالوگ به دیجیتال همان موقع می توانید استفاده کنید.

taktrashe
28-06-2015, 14:27
داره میگه که نرم افزار java runtime environment را باید نصب کنید

دوستان این java runtime environment 1.7.0 رو از کجا و چطوری میشه نصب کرد !

aminanet
28-06-2015, 15:52
سلام به همه دوستان
من تقریبا کل این تاپیک و خوندم. درسته که Keil نسبتا کامپایلر خوبی هست اما در واقع با استفاده از همون توابع CMSIS باز هم اینقدر دردسر هست که همش باید بری بگردی و سیخونک بزنی و ...
مثلا برای ایجاد یه تاخیر در حد ثانیه یه کاری باید بکنی در حد قتل عمد!!!
پیشنهاد میکنم عزیزان یه سری به کامپایلر MikroC بزنن. واقعا عالیه

mzarkoob
28-06-2015, 17:58
خوب با کیل به صورت رجیستری کد بنویسید اگه می خواهید با cmsis نباشه

taktrashe
28-06-2015, 23:34
دوستان این java runtime environment 1.7.0 رو از کجا و چطوری میشه نصب کرد !
میتونید راهنمایی کنید !؟

skiboys
29-06-2015, 04:04
میتونید راهنمایی کنید !؟
سلام بزن توی گوگل دانلود جاوا مثلا می تونی از لینک زیر دانلود کنی
Java SE Runtime Environment 8.0 Update 45 / 7.0 Update 80 / JDK x86/x64 (You can see links before reply)

skiboys
29-06-2015, 04:10
من یک سوالی را چند صفحه قبل در مورد شبیه سازی میکروهای STM32 پرسیدم که کسی جوابی نداد
You can see links before reply

چند وقته که دنبالشم و فهمیدم که میکروهای cortexm0,cortexm4 داخل کیل قابلیت شبیه سازی ندارند البته می تونید دیباگ کنیدولی simulation نمی تونید بکنید
التماس دعا

aminanet
29-06-2015, 17:22
دوستان میدونید این ایراد برای چیه؟
You can see links before reply

mzarkoob
29-06-2015, 17:54
کتابخانه rcc باید اد شده باشه و هدرشم اینکلاد شده باشه

aminanet
29-06-2015, 18:44
مرسی از اینکه سریع و دقیق جواب دادین :wink:

یه مشکل دیگه دارم. اینکه فایل STM32_Init و به پروژه اضافه کردم منتها توی فایل STM32_Init.c یه هدر هست به اسم STM32_Reg.h که ازش ایراد میگیره. این و چطور میشه حلش کرد؟
8789

ehsanbagheri
29-06-2015, 21:43
اگر تازه شروع کردید برنامه stm32cubemx رو که تو صقحات قبل معرفی کردم نصب کنید خیلی از مشکلاتون حل میشه
بعد که راه افتادید میتونید با رجیستر ها هم کار کنید ولی cmsis بهتره چون کمتر درگیر رجیستر میشید

aminanet
30-06-2015, 00:49
اگر تازه شروع کردید برنامه stm32cubemx رو که تو صقحات قبل معرفی کردم نصب کنید خیلی از مشکلاتون حل میشه
بعد که راه افتادید میتونید با رجیستر ها هم کار کنید ولی cmsis بهتره چون کمتر درگیر رجیستر میشید
من نرم افزاری که گفتید رو چند وقته پیش با آپدیت هاش نصب کردم. سؤالی که دارم اینه که آیا میشه فقط با همون توابعی که این نرم افزار میده کار کرد با توجه به اینکه نام های اون با CMSIS متفاوته؟
چون اگه قرار باشه داخل توابع اون از CMSIS استفاده کنیم دوباره روز از نو روزی از نو. باید همه رو دوباره بشناسونیم و دردسر داره.
یه چیز دیگه اینکه کار با توابع CMSIS چرا اینقدر گنگ و کج و کوله است؟ توی توابع به چیزهایی میخوریم که فراخونی شده ولی عمرا وجود خارجی نداره؟!!
اینقد ایراد و خطا میگیره که آدم بیزار میشه. حالا یا من واقعا مشکل دارم یا خیلی درست و حسابی نیست. یک هفته ست میخوام فقط یک پین و صفر و یک کنم ولی واقعا موندم دیگه. کدهای آماده دیگران و باز میکنم اصلا معلوم نیست توش چه خبره.حتی یه دونه پیدا نکردم که کلاک و تعریف کرده باشه. همینجوری کامپایل میکنی همش خطا میده با اینکه همه توابع و تعریف میکنم.کامپایلر من آخرین ورژنه.
آیا میشه اطلاعاتی از نحوه کارکرد توابع نرم افزار cubemx پیدا کرد؟
من توی MikroC برنامه مینویسم و تقریبا همه کار میکنم نمیدونم چرا توی KEIL اینقد به مشکل خوردم.

Hadi_ghr_e
30-06-2015, 14:07
سلام
روز همگی بخیر
از اساتید کسی هست که بتونه در مورد توابع و امکانات مربوط به timer 1 توضیحاتی ارایه بده؟
منظورم با cmsis هستش
از stm32f103zet6 استفاده میکنم و میخوام با اپدیت کردن مقدار ocr3n (در avr به این اسمها شهرت داشت) در طول برنامه یه موج خاص در خروجی تایمر ایجاد کنم
اینا رو نوشتم براش، لطفا راهنمایی کنید که کجاشهاش ایراد داره.


TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
TIM_OCInitTypeDef TIM_OCInitStruct;
TIM_DeInit(TIM1);

TIM_TimeBaseInitStruct.TIM_Prescaler = (65535);
TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInitStruct.TIM_Period = 2000;
TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInitStruct.TIM_RepetitionCounter = 0;

TIM_TimeBaseInit(TIM1, &TIM_TimeBaseInitStruct);

TIM_OCStructInit(&TIM_OCInitStruct);

TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_Toggle;
TIM_OCInitStruct.TIM_OutputNState = TIM_OutputNState_Enable;
TIM_OCInitStruct.TIM_Pulse = 0x0000;
TIM_OCInitStruct.TIM_OCNPolarity = TIM_OCNPolarity_Low;
TIM_OCInitStruct.TIM_OCNIdleState = TIM_OCNIdleState_Reset;

TIM_OC3Init(TIM1, &TIM_OCInitStruct);
TIM_InternalClockConfig(TIM1);
TIM_PrescalerConfig(TIM1, 1, TIM_PSCReloadMode_Update);
TIM_CounterModeConfig(TIM1, TIM_CounterMode_Up);
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Enable);
TIM_ARRPreloadConfig(TIM1, DISABLE);



You can see links before reply
از دیتا شیت و منوال شرکت st همینارو متوجه شدم
لطفا ایراداتش رو بگیرین
یه متغییر دارم به نام CCR3_Value که مقدار جدید CCR رو داخل اون میریزم


تشکر
روز خوش

ehsanbagheri
30-06-2015, 23:58
سلامیه پروژه درست کردم که داخل while دوخط کد هست مقدار puls رو از 0-1024 میتونی تغییر بدی که اندازه pulse رو تعیین میکنهDropbox - f103zet6.rar (You can see links before reply)

Hadi_ghr_e
01-07-2015, 01:01
سلامیه پروژه درست کردم که داخل while دوخط کد هست مقدار puls رو از 0-1024 میتونی تغییر بدی که اندازه pulse رو تعیین میکنهDropbox - f103zet6.rar (You can see links before reply)

سلام
مرسی دوست عزیز
فقط کتابخانه های پروزه شما برام نا اشناست
یعنی جایی ندیدم
برای ساخت اینجور پروژه ها ایا نرم افزار ویزاردی وجود داره که با cmsis جواب بده؟
تشکر

- - - Updated - - -

من نیاز دارم ماهیگیری یاد بگیرم
اساتید پشت مارو خالی نکنن لطفا
یه اموزش حتی مختصر
از کامپیر باید استفاده کنم؟

ehsanbagheri
01-07-2015, 12:31
سلام
مرسی دوست عزیز
فقط کتابخانه های پروزه شما برام نا اشناست
یعنی جایی ندیدم
برای ساخت اینجور پروژه ها ایا نرم افزار ویزاردی وجود داره که با cmsis جواب بده؟
تشکر

- - - Updated - - -

من نیاز دارم ماهیگیری یاد بگیرم
اساتید پشت مارو خالی نکنن لطفا
یه اموزش حتی مختصر
از کامپیر باید استفاده کنم؟

سلام
من که قبلا یهتون توضیح دادم شما اول stm32cubemx رو نصب کنید و از قسمت update پکیج مربوت به سری میکرو تون رو نصب کنید
این فایل رو هم تو گوگل سرچ کنید و دانلود کنید اگر نتونستید باز هم باهاش کار کنید من راهنمایی میکنم
البته این نرم افزار مستقیم با رجیستر ها کار نمیکنه ولی تویه آرم ها کار با رجیسترها واقعا سخت میشه و نیازی هم نیست
این فایل منوال هم که گفتم dm00154093.pdf

aminanet
01-07-2015, 15:35
اساتید ارجمند، آیا روشی هست که بشه فرکانس میکرو رو به دست آورد؟ مثلا یه رجیستر و خوند که فرکانس به دست بیاد؟

Hadi_ghr_e
01-07-2015, 17:25
سلام
من که قبلا یهتون توضیح دادم شما اول stm32cubemx رو نصب کنید و از قسمت update پکیج مربوت به سری میکرو تون رو نصب کنید
این فایل رو هم تو گوگل سرچ کنید و دانلود کنید اگر نتونستید باز هم باهاش کار کنید من راهنمایی میکنم
البته این نرم افزار مستقیم با رجیستر ها کار نمیکنه ولی تویه آرم ها کار با رجیسترها واقعا سخت میشه و نیازی هم نیست
این فایل منوال هم که گفتم dm00154093.pdf

سلام و روز بخیر عرض میکنم
ممنون که وقت میزارین
میخوایتم با اندازه گیری دمای داخل جعبه واستفاده از پایه CH3N یعنی PB.15 بیس ترانزیستوری رو تحریک کنم که یک فن رو کنترل میکنه
با افزایش دما دور فن زیاد و با کاهش اون دور فن کم میشه
cubemx رو نصب دارم ولی خروجیش رجیستره نه cmsis
لطفا اگه امکان داره یه توضیحاتی در مورد تایمر بدین
مثلا پری اسکیلر چیه و مربوط به کدام قسمت شکلی که من گذاشتم میشه؟
پری یود چیه ؟
از چه مدی باید استفاده کرد؟
بازم تشکر

ehsanbagheri
01-07-2015, 19:34
سلام
اون فایل رو که فرستادم داخلش یه پروژه با cubemx هست اون رو باز کنید و ADC رو هم تنظیم کنید و جنریت رو بزنید تا تغییرات اعمال بشه
موقع نوشتن کد هم باید همه کدهاتون رو بین این دو جمله بنویسید
/* USER CODE BEGIN 2 */


/* USER CODE END 2 */
تا وقتی دوباره تنظیمات رو عوض کردید cubemx کدهاتون رو پاک نکنه
اون یوزر منوال رو که گفتم تو پست قبل هم دانلود کنید بدرتون میخوره
cubemx برایه مقدار دهی به رجیستر ها میاد یه struct درست میکنه و به اعضایه اون اعداد رو نصبت میده و در آخر با ارسال به یه تابع اعداد رو دریافت میکنه و به رجیستر ها میده
به طور مثال داخل این تابع در پروژه ای که ارسال کردم تنظیمات تایمر انجام میشه void MX_TIM1_Init(void)
داخل تابه یه متغیر هست چنتا اسم
TIM_ClockConfigTypeDef sClockSourceConfig;
TIM_MasterConfigTypeDef sMasterConfig;
TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig;
TIM_OC_InitTypeDef sConfigOC;
که هرکدوم قسمتی از تایمر رو تنظیم میکنه مثلا TIM_OC_InitTypeDef sConfigOC; برایه قسمت PWM هست که داره تعدادی عضو هست
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 512;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1);
شما بسته به نیازتون در برنامه این پارامتر ها رو تغییر میدید و آخرین خط رو یعنی HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1); ذوباره فراخوانی میکنید تا تغییرات اعمال بشه
ولی برایه این کار یا باید استراکت TIM_OC_InitTypeDef sConfigOC; خارج از همه توابع به صورت عمومی تعریف کنید یا داخل هرتابع دیگه که استفاده میکنید یه استراک دیگه هم تعریف کنید و همون استراکت
رو به عنوان آرگومان به تابع تنظیمات ارسال کنید شما برایه تغییر در عرض پالس کافیه sConfigOC.Pulse = 512; رو به مقدار دلخواه تغییر بدید و حداکثر هم 1024 چون تو تابه اصلی تایمر نگاه کنید من پریود هایه
شمارش تایمر رو 1024 دادم که قابل تغییر هست تا 65535 بعد از اعمال عدد مورد نظر به هر عضو از استراکت باید تابع مورد نظرش رو هم فراخوانی کنی تا تغییرات رو در خروجی ببینی
امیدوارم متوجه شده باشی من بلد نیستم خوب توضیح بدم

ehsanbagheri
01-07-2015, 19:59
اساتید ارجمند، آیا روشی هست که بشه فرکانس میکرو رو به دست آورد؟ مثلا یه رجیستر و خوند که فرکانس به دست بیاد؟
بله یه تابع هست که فرکانس هسته رو برمیگردونه HAL_RCC_GetSysClockFreq(void)

ehsanbagheri
01-07-2015, 20:16
تایمر هایه بیشتر آرمها خیلی پیچیده هستند و امکانات زیادی رو ارایه میدن
فرکانس باسی رو که تایمر بهش وصل هست (apb1 ,apb2 بسته به آیسی و شماره تایمر ممکنه رو یکی از اینا باشه)
رو به عدد پری اسکیل تقسیم میکنه و فرکانس کاری تایمر بدست میاد
پریود هم همون عدد 65535 تویه شکل هست که میتونه از 0 تا 65535 تغییر کنه
عزض پالس رو هم که تو پست قبلی توضیح دادم

Hadi_ghr_e
01-07-2015, 20:27
مرسی
طولانی بودن روزهای ماه مبارک رمضان توانایی کار رو از من گرفته
روزه همه قبول حق
یه ساعت بعد از افطار روش کار میکنم
امیدوارم بتونم از توضیحات شما استفاده کامل کنم
تشکر

Hadi_ghr_e
01-07-2015, 23:25
با سلام
میخواستم بدونم معنی این دوتا دستور چیه؟
من برای همون فن اینجوری ستشون کردم طبق مثالهایی که دیدم.

TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInitStruct.TIM_RepetitionCounter = 0;

ehsanbagheri
02-07-2015, 14:11
این دوتا متغفییر برایه تنظیم دوره شمارش و تقسیم کلاک ورودی برایه بدست آوردن کلاک اصلی تایمر اینا رو برایه pwm نیاز نیست تغییر بدید

Hadi_ghr_e
03-07-2015, 12:39
این دوتا متغفییر برایه تنظیم دوره شمارش و تقسیم کلاک ورودی برایه بدست آوردن کلاک اصلی تایمر اینا رو برایه pwm نیاز نیست تغییر بدید

سلام
روز بخیر
ممنونم که همکاری میفرمایین
منظورتون از دوره شمارش چیه دوست عزیز؟
یعنی تایمر تنظیم میشه برای انجام کاری به تعداد مشخص؟
مثل حلقه for?
مرسی

ehsanbagheri
03-07-2015, 16:30
یعنی اینکه تایمر در کسیری از ثانیه یک واحد به مقئارش اضافه میشه که این زمان رو با فرکانس باس و
tim_ckd_div1 بدست میاریم
البته من زیاد با تایمر ها کار نکردم و بهتره یوزر منوال رو بخونید تا همه قسمت هایه تایمر رو به خوبی درک کنید من در حد نیاز خودم مطالعه کردم

Hadi_ghr_e
03-07-2015, 16:54
سلام
یوزر منوال رو خوندم
رجیسترها رو توضیح میداد
سوال بالا در مورد مد ریپید بود
صد البته که راهنمایی های شما کارگشاست
دو تا عقل بهتر از یکیه
روز خوش

dellfogostar
05-07-2015, 10:22
سلام
دوستان
میکروی من STM32F103C8T6 هستش با swdio دو سه بار پرگرام شد اما دیگه نشد :(:(
تو به نظرتون مشکل چیه آیا کانفیگ pin ها عوض شده ؟

hajar1272
05-07-2015, 12:16
سلام . چه error ی بهتون می ده ؟

dellfogostar
05-07-2015, 16:07
سلام . چه error ی بهتون می ده ؟

internal error

hajar1272
05-07-2015, 17:09
سرعت پروگرامر رو بزارید رو auto ببینین درست نمی شه . من یه بار ای سی م پروگرام نمی شد کلید ریست برد رو گرفتم و ای سی رو پروگ کردم درست شد البته یکمی روشم من دراوریه نمی دونم شاید به درد شما هم بخوره :mrgreen:

Hadi_ghr_e
07-07-2015, 22:51
سلام
وقت بخیر
دوستان راهنمایی بفرمایین که چطور میشه کد نوشته شده رو بعد از پرگرم کردن روی فلش میکرو در مقابل خوانده شدن محافظت کرد؟
دوم اینکه بعد از قفل کردن فلش ایا میشه همچنان ازش به عنوان eeprom استفاده کرد و مشکل پیش نمیاد؟
تشکر

mstkmn
09-07-2015, 10:36
سرعت پروگرامر رو بزارید رو auto ببینین درست نمی شه . من یه بار ای سی م پروگرام نمی شد کلید ریست برد رو گرفتم و ای سی رو پروگ کردم درست شد البته یکمی روشم من دراوریه نمی دونم شاید به درد شما هم بخوره :mrgreen:

سلام
شما احتمالا پین های پروگرام رو remap کرده بودی که در این صورت بعد از اجرای برنامه دیگه IC با SWD پروگرام نمیشه.
وقتی شما کلید ریست رو نگه میداری عملا مانع اجرای برنامه میشی و پین های پروگرام تو همون مد پیش فرض میمونه و IC پروگرام میشه.

dellfogostar
14-07-2015, 16:49
با تشکر از دوستان با ریست تونستم پرگرامش کنم.

منص111
28-07-2015, 16:56
سلام به همگی دوستان
من دانشجوی رشته رباتیک م و الان برای کارآموزیم ازم خواستن برنامه نویسی STM32 رو کارکنم. اما نه از کانفیگ کردن چیزی میدونم نه از برنامه نویسی ش!
متاسفانه پروژه های موجود هم در نرم افزار keil که نصب کردم باز نمیشه، وقت نداشتم کل 55 صفحه نظرات رو بخونم. برد MINI-STM32-V3.0 دارم و پروگرمر جی لینک...
لطفا راهنماییم کنید آبروم در خطره!!!!cry:::(

- - - Updated - - -

الان نزدیک دو ماهه داشتم تلاش می کردم بتونم توی ایران میکرو عضو بشم تا بتونم خیلی از لینک ها رو ببینم امروز بالاخره موفق شدم.

منص111
28-07-2015, 17:55
مهندس سلام . تا کجا پیش رفتین ؟ من حسابی سرم شلوغ شده و اصلا نمی رسم پیگیر کار بشم . البته برد رو هم هنوز نگرفتم ولی قطعات رو گرفتم !! الان که نگاه می کنم بچه ها رو اینجا نمی بینم ! آقای حسینا کجاست ؟ بقیه ؟ چرا همچی یهو ساکت شد ؟ فقط هدف ساخت برد بود ؟!! اصلا کسی نگفت مونتاژ کرده و کار می کنه !
به هر حال یه نگاهی به برنامه انداختم . فکر کنم تابع init رو جا انداخته بودی اگه اشتباه نکنم ! این فایلو یه تست کن . فقط من نمی دونم led های شما سر کدوم پورته ، یه چک کن اتصال نشه .
سلاااام هیچکدوم از این لینک هایی که گذاشتید بعد از دانلود توی keilباز نمیشه!!!!ورژن 4 هه...کمکم کنید!

aminanet
28-07-2015, 18:09
سلام به همگی دوستان
من دانشجوی رشته رباتیک م و الان برای کارآموزیم ازم خواستن برنامه نویسی STM32 رو کارکنم. اما نه از کانفیگ کردن چیزی میدونم نه از برنامه نویسی ش!
متاسفانه پروژه های موجود هم در نرم افزار keil که نصب کردم باز نمیشه، وقت نداشتم کل 55 صفحه نظرات رو بخونم. برد MINI-STM32-V3.0 دارم و پروگرمر جی لینک...
لطفا راهنماییم کنید آبروم در خطره!!!!cry:::(

- - - Updated - - -

الان نزدیک دو ماهه داشتم تلاش می کردم بتونم توی ایران میکرو عضو بشم تا بتونم خیلی از لینک ها رو ببینم امروز بالاخره موفق شدم.

عزیز دل برادر با این وصفی که شما رفتی کار داری هنوز. نمیخوام ناامیدت کنم اما اگه چیزی برات مهمه باید براش زحمت بکشی.اونجوری نیست که بشه توی ده دقیقه قضیه رو حل کنی بره

منص111
30-07-2015, 10:52
عزیز دل برادر با این وصفی که شما رفتی کار داری هنوز. نمیخوام ناامیدت کنم اما اگه چیزی برات مهمه باید براش زحمت بکشی.اونجوری نیست که بشه توی ده دقیقه قضیه رو حل کنی بره
بله
گفته شما صحیح اما من درباره STM32کمک خواستم که هیچ جایی ازش حرفی نیست و کتابی هم راجع بهش پیدا نکردم!
از این نظر کمک خواستم که بهم بگید برای STM چیزی هست؟
ii998)

taktrashe
01-08-2015, 09:33
وقت بخیر

در یک پروزه در کیل 511 که اخیرا تهیه کردم از ماجول های زیر استفاده شده !! وقتی ارای تعریف میکنم ( 4 عضو ) با دانلود پروژه در کنتروللر ! هنگ میکند و اجرا نمیشود !!! بنظرتون مشکل ار کجاست !

#include "stm32f10x_adc.h"
#include "stm32f10x_dma.h"
#include "stm32f10x_fsmc.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_tim.h"
#include "stm32f10x_usart.h"

taktrashe
01-08-2015, 15:19
وقت بخیر

کمی وارد جزییات شدم با debug !! اتفاقی که میفته این هست که یک متغییر unsigned char i تعریف کردم ! فقط تعریف بدون بکار گرفتن ! برنامه خوب کار کرد ! حالا char رو به int تغییر دادم !! برنامه هنگ کرد !! debug برنامه رو چک کردم در قسمت lcd_init وقتی فانکشنlLCD_WR_DATA(0x0023)اجرا میشه موقع برگشت از فانکشن کلیه رحیسترهای RCC بهم میریزه !! و برنامه به جای نامشخص پرش میکنه !!

علت این اتفاق و راه حل رفع این اشکال رو نمیدونم چی هست !!؟؟ ممنون میشم راهنمایی کنید !!!

بی مخ!
03-08-2015, 22:25
سلام خدمت دوستان،

من میخوام یه at24c01 رو با I2C1 راه اندازی کنم. (میکرو f103rbt6) اما به هیچ صراطی مستقیم نیست و وقتی دیباگ میکنم توی این خط گیر میکنه:


while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));


کسی تونسته از I2C سخت افزاری جواب بگیره با این آیسی؟



وقت بخیر

کمی وارد جزییات شدم با debug !! اتفاقی که میفته این هست که یک متغییر unsigned char i تعریف کردم ! فقط تعریف بدون بکار گرفتن ! برنامه خوب کار کرد ! حالا char رو به int تغییر دادم !! برنامه هنگ کرد !! debug برنامه رو چک کردم در قسمت lcd_init وقتی فانکشنlLCD_WR_DATA(0x0023)اجرا میشه موقع برگشت از فانکشن کلیه رحیسترهای RCC بهم میریزه !! و برنامه به جای نامشخص پرش میکنه !!

علت این اتفاق و راه حل رفع این اشکال رو نمیدونم چی هست !!؟؟ ممنون میشم راهنمایی کنید !!!
ممکنه از پر شدن stack باشه؟

taktrashe
03-08-2015, 23:46
وقت بخیر

برای خودم هم جالب بود با تغییر محل فانکشن های Init ظارا مشکل حل شد و هنگ ندارم



//old
SystemInit();
Init_LED();
Init_NVIC();
Init_TIMER();
Usart_Configuration(115200);
LCD_Init();
//new
SystemInit();
LCD_Init();
Init_LED();
Init_TIMER();
Usart_Configuration(115200);
Init_ADC();

LCD_Init از آخر ، به بعد از SystemInit منتقل شد !!


You can see links before reply

منص111
04-08-2015, 16:01
مرسی از اینهمه راهنمایی !!!!

- - - Updated - - -

lov:8O

Hadi_ghr_e
10-08-2015, 22:48
سلام
دوستان کسی فارسی نویسی در ال سی دی n96 رو داره با stm ؟
تشکر

Shapour_Ardebil
12-08-2015, 11:39
سلام
دوستان کسی فارسی نویسی در ال سی دی n96 رو داره با stm ؟
تشکر

با سلام

من این را دیدم ولی خودم باهاش کار نکردم
You can see links before reply

Hadi_ghr_e
12-08-2015, 11:52
سلام
روز همگی بخیر
از تابع delay که پیج 1 این فرم بود استفاده کردم ولی جواب نداد و برنامه توش هنگ کرد
یه حلقه while داشت که تو اون هنگ میکرد
کسی کار کرده با این تابع؟

- - - Updated - - -


با سلام

من این را دیدم ولی خودم باهاش کار نکردم
You can see links before reply


مرسی برادر
دیده بودمش ولی متوجه نشدم نرم افزار فونت ادیتورش چطور کار میکنه
شما چیزی ازش دسگیرت شد؟

Hadi_ghr_e
14-08-2015, 21:50
با سلام و خسته نباشیدمن میخوام از lcd n96 به صورت ۸ بیتی استفاده کنم. توی کتابخونه از پایه های A8 و B4 و C2_7 استفاده شده.
من میخوام از پایه های 8 تا 15 توی GPIOG استفاده کنم، اینو چه تغییری باید بدم تا جواب بگیرم؟

void tft_Write(uint8_t data)
{
GPIOA->ODR &= 0xfeff;
GPIOA->ODR |= (data&0x01)<<8; // Write A8 -> DB0

GPIOB->ODR &= 0xffef;
GPIOB->ODR |= ((data>>1)&0x01)<<4; // Write B4 -> DB1


GPIOC->ODR &= 0xff03; // Write C2~C7 -> DB2~DB7
GPIOC->ODR |= data&0xfc;
}

sigma-mx
14-08-2015, 23:53
اینو تست کن :



void tft_Write(uint8_t data)
{
GPIOG->ODR &= 0x00ff;
GPIOG->ODR |= data<<8;
}

Hadi_ghr_e
15-08-2015, 00:00
اینو تست کن :



void tft_Write(uint8_t data)
{
GPIOG->ODR &= 0x00ff;
GPIOG->ODR |= data<<8;
}





جواب نداد!

mstkmn
15-08-2015, 10:31
جواب نداد!

شاید پایه ها رو خروجی تعریف نکردی.

Hadi_ghr_e
15-08-2015, 11:14
شاید پایه ها رو خروجی تعریف نکردی.



/* Configure PG.8,9,10,11,12,13,14,15 (LCD Data) as push-pull output */
GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15);
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOG, &GPIO_InitStructure);





اینکارو انجام دادم قبلا

naeb
16-08-2015, 15:03
سلام به همه دوستان میخواستم Interrupt داخلی رو با توابع cmsis راه اندازی کنم که تا یه مقدار بشماره و بعد به پرچم سر ریز بره و تو پرچم هم مثلا یک پایه رو روشن یا خاموش بکنه .
میخواستم راهنمایم بکنید که چطوری پیکر بندی تایمر رو انجام بدم .(میکروم stm32f030 هستش)
باسپاس.

taktrashe
16-08-2015, 18:45
وقت بخیر

void Init_TIMER2(void)
{
TIM_TimeBaseInitTypeDef TIM_BaseInitStructure; //assine new tim base structure
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //enable APB1 tim2 clock
TIM_DeInit( TIM2); //de init TIM2
TIM_InternalClockConfig(TIM2); //
TIM_BaseInitStructure.TIM_Period = 10000; // 1000000/1000=1000us=1ms
// TIM_BaseInitStructure.TIM_Period = 110*1000000/buadrate;
TIM_BaseInitStructure.TIM_Prescaler = 71 ; //
TIM_BaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; //
TIM_BaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
// TIM_BaseInitStructure.TIM_RepetitionCounter = 0; //´Ë²ÎÊýÖ»ÊʺÏÓÚTIM1ºÍTIM8
TIM_TimeBaseInit(TIM2, &TIM_BaseInitStructure); //÷
TIM_ClearFlag(TIM2, TIM_FLAG_Update); //
TIM_ARRPreloadConfig(TIM2, DISABLE); //÷
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); //´
TIM_Cmd(TIM2, ENABLE); //
}

void Init_NVIC(void)
{
NVIC_InitTypeDef NVIC_InitStructure;

#ifdef VECT_TAB_RAM //
NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); //0x20000000(RAM)
#else
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); //0x08000000(FLASH)
#endif

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); //Configure the NVIC Preemption Priority Bits

/* Enable the TIM2 Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; //setup channel TIM2
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriori ty = 0; //ÇÀÕ¼ÓÅÏȼ¶0
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //setup sub priority 1
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //enable
NVIC_Init(&NVIC_InitStructure); //init TIM2
}

void TIM2_IRQHandler(void)
{
uint16_t buf[4];

TIM_ClearITPendingBit(TIM2, TIM_IT_Update); //clear tim2 IT flag


if(--milcnt==0){
//------------------------------
milcnt=10; //every 100ms
cnt++;
LED1=~LED1; //PD6 tooggle led1 every 0.1 s

{

sigma-mx
16-08-2015, 19:27
جواب نداد!

کلاک پورت g رو فعال کردی ؟ هیچ کدوم از این پینهایی که بکار بردی پیش فرض تو مد دیگه ای نیستند ؟ میکروت چیه ؟

Hadi_ghr_e
17-08-2015, 21:24
کلاک پورت g رو فعال کردی ؟ هیچ کدوم از این پینهایی که بکار بردی پیش فرض تو مد دیگه ای نیستند ؟ میکروت چیه ؟

سلام
کلاک پورت g فعاله
میکروم stm32f103zet6
هنوز از هیچ کدام از afio ها استفاده نکردم فقط چندتا اینتراپت فعاله که اونم روی این پایه ها نیست
نمیدونم پیش فرض چیزی دارن یا نه

sigma-mx
17-08-2015, 21:43
برد آموزشی استفاده کردی یا خودت pcb زدی ؟ اگه برد آموزشیه آیا نند فلش یا رم اکسترنال داره ؟

kavireloot
19-08-2015, 15:57
سلام مهندسsigma-mx
آقا یه سوال اینکه آیا برنامه ی stmf103rbt6 رو میشه برای stm32f103ret6 استفاده کرد؟
و اینکه من میخام از طریق spi چیپ اترنت w5100 رو فعال کنم میشه یکم راهنمایی کنین.
مرسی از پست های عالیتون

sigma-mx
19-08-2015, 16:20
آقا یه سوال اینکه آیا برنامه ی stmf103rbt6 رو میشه برای stm32f103ret6 استفاده کرد؟
منظور از برنامه دقیقا چیه اینجا ؟ اگه منظورت کد سورسه که کامپایل کنی و برای re استفاده کنی مشکلی نیست چون re همون rb هست ،فقط ظرفیتش بیشتره با یکم امکاناتش .فقط موقع کامپایل اسم چیپ رو به re تغییر بده . و اگر منظورت اینه که کد هگز rb رو، رو re بریزی .. نمیدونم جواب میده یانه . کار درستی نیست !
در مورد چیپ اترنت هم تو نت بگردید لایبرری حتما پیدا میکنید من با این چیپ کار نکردم .

یا حق

kavireloot
19-08-2015, 16:28
منظور از برنامه دقیقا چیه اینجا ؟ اگه منظورت کد سورسه که کامپایل کنی و برای re استفاده کنی مشکلی نیست چون re همون rb هست ،فقط ظرفیتش بیشتره با یکم امکاناتش .فقط موقع کامپایل اسم چیپ رو به re تغییر بده . و اگر منظورت اینه که کد هگز rb رو، رو re بریزی .. نمیدونم جواب میده یانه . کار درستی نیست !
در مورد چیپ اترنت هم تو نت بگردید لایبرری حتما پیدا میکنید من با این چیپ کار نکردم .

یا حق

ممنون از پاسختون...خوب راستش یه برنامه نوشتین برای فعال سازیه spi میکروی stm32f103rbt6 ، من اون برنامه رو دانلود کردم و میکرو رو فقط تغییر دادم و تا اونجا که من چک کردم پایه ها هم یکی بودن، اما پس از دادن برنامه به میکروی stm32f103ret6 متاسفانه هیچ کدوم از پایه های spi فعال نبودن...
یه سوال دیگه اینکه میشه یه راهنمایی بکنین که این نحوه ی کار با رجیسترهای این میکروء ret6 رو از کجا میشه بدست آورد...توی دیتا شیت و رفرنس مونوال هم چیزی نبود راستش
بازم ممنون

mstkmn
20-08-2015, 09:46
یه سوال دیگه اینکه میشه یه راهنمایی بکنین که این نحوه ی کار با رجیسترهای این میکروء ret6 رو از کجا میشه بدست آورد...توی دیتا شیت و رفرنس مونوال هم چیزی نبود راستش
بازم ممنون

سلام
rm0008 رفرنس منوال مربوط به تقریبا کلیه میکروهای سری stm32f10 هستش که ret رو هم شامل میشه.

kavireloot
20-08-2015, 12:16
سلام
rm0008 رفرنس منوال مربوط به تقریبا کلیه میکروهای سری stm32f10 هستش که ret رو هم شامل میشه.
سلام.
ممنون از راهنماییتون خیلی راهنماییه خوبی بود...مطالعه میکنماگه جایی اشکال داشتم مزاحم میشم باز

Hadi_ghr_e
21-08-2015, 20:49
برد آموزشی استفاده کردی یا خودت pcb زدی ؟ اگه برد آموزشیه آیا نند فلش یا رم اکسترنال داره ؟

سلام
برد اموزشی همین شرکته و نه نند فلش داره و نه رم اکسترنال
یه میکرو خالیه
همین

sigma-mx
21-08-2015, 23:48
خب به این خاطر گفتم چون نند یا رم اکسترنال از واحد fsmc استفاده میکنه و یکسری از پینهای پورت g کاربرد برای fsmc دارند پس حتما به نند هم متصلند . شاید تداخل داره ! از پینهای دیگه استفاده کن . و همیشه یادت باشه شماتیک بردت رو داشته باشی وقتی باهاش برنامه مینویسی اگه همراهش نبود شماتیک ، خودت مهندسی معکوس کن ، سخت نیست.

naeb
22-08-2015, 10:40
سلام به همه دوستان.می خواستم بدونم چطوری میتونم زمان تایمر رو محاسبه کنم مثلا زمان 10میلی ثانیه رو بدست بیارم؟
TIM_TimeBaseInitTypeDef TIM_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE) ;

TIM_InitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_InitStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_InitStructure.TIM_Period = 1000;
TIM_InitStructure.TIM_Prescaler = 1;
TIM_TimeBaseInit(TIM3,&TIM_InitStructure);


TIM_Cmd(TIM3,ENABLE);
NVIC_SetPriority(TIM3_IRQn,0);
NVIC_EnableIRQ(TIM3_IRQn);
TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
(stm32f030)
یک سئوال دیگه هم داشتم چطوری میتونم میکرو رو قفل کنم تا hex و از رو میکرو نشه برداشت
ممنون.

mstkmn
22-08-2015, 16:10
سلام
زمان تایمر رو باید بر حسب فرکانس کار میکرو حساب کنی.
مثلا اگه داری با 24MHZ کار میکنی 10ms رو میتونی به روش زیر بدست بیاری.


TIM_InitStructure.TIM_Period=10000;
TIM_InitStructure.TIM_Prescaler=23;



برای قفل کردن میکرو هم باید توی Option Bytes گزینه Read out protection رو فعال کنی.

sigma-mx
22-08-2015, 21:23
معمولا سه سطح 0 و 1 و2 داره . سطح 0 همون Unlock هست . سطح 1 ، همون چیزیه که شما میخوای یعنی Read Out Protection و سطح 2 ، باید حواستون خیلی جمع باشه اشتباهی نزنید که غیر قابل بازگشته ! یعنی فیوزبیت های میکرو با آخرین کانفیگ میسوزه و دیگه باز نمیشه ! یعنی نه erase میشه نه پروگرام و فقط آخرین برنامه رو اجرا میکنه . ولی سطح 1 بزاری در مقابل خوندن محافظت شده هست اگه بخوای تغییر بدی برنامه رو میبری سطح 0 همچی پاک میشه و مثل روز اول .. با stlink utility این کار راحتتره ...

naeb
22-08-2015, 22:13
سلام به همه دوستان ممنون از راهنمایی های ارزشمندتون .
اگه میشه (((فرمول))) محاسبه زمان تایمر رو بگید
.(فرکانس ۴۸mhzهستش).:0013:

ممنون.



TIM_InitStructure.TIM_Period=10000;
TIM_InitStructure.TIM_Prescaler=23;

mstkmn
23-08-2015, 09:31
سلام به همه دوستان ممنون از راهنمایی های ارزشمندتون .
اگه میشه (((فرمول))) محاسبه زمان تایمر رو بگید
.(فرکانس ۴۸mhzهستش).
:0013:


ممنون.



TIM_InitStructure.TIM_Period=10000;
TIM_InitStructure.TIM_Prescaler=23;





سلام





(TIM_Prescaler+1) * TIM_Period /Frequency





که فرکانس تو مورد شما 48MHz هست.

Hadi_ghr_e
23-08-2015, 18:59
از پین 0 تا 15 همین پرت استفاده میکنم در مد 16 بیتی
برا مد 8 پین از کدام پاییه های ال سی دی باید استفاده کرد ؟
دیتا شت میگه d8 تا d15
درسته؟

مینی برد STM32F103ZET6 (You can see links before reply)

Hadi_ghr_e
25-08-2015, 16:25
سلام
روز بخیر
از دوستان کسی فرصت راهنمایی رو نداشت؟
هنوز نتونستم رو مد 8 بیتی و با پاییه های g0-7 ال سی دی n96 رو راه اندازی کنم

naeb
25-08-2015, 19:18
سلام به همه دوستان .من یک برنامه pwm ساده نوشتم که نور یک led رو کنترل کنم برنامم به خوبی کار میکنه و میتونم نور led رو کنترل کنم اما نمتونم بعد از پیکر بندی timer وpwm ومقدار دادن به TIM_Pulse،مقدار TIM_Pulse رو تو برنامم تغییر بدم که میزان نور رو نسبت به یک پارامتر تغییر بدم.چطوری میتونم مقدارش رو تغییر بدم؟
#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "lcd4bit.h"
#include "stm32f10x_tim.h"
#include "delay.h"


TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
GPIO_InitTypeDef GPIO_initStructure;


uint16_t CCR1_Val = 10;
uint16_t PrescalerValue = 0;


void RCC_Configuration(void)
{ /* TIM3 clock enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
/* GPIOA and GPIOB clock enable */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_AP B2Periph_AFIO, ENABLE);
}


void GPIO_Configuration(void)
{
GPIO_initStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_initStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_initStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_initStructure);
}


void TIMER_Configuration (void)
{
CCR1_Val=CCR1_Val*6.65;


PrescalerValue = (uint16_t) (SystemCoreClock / 24000000) - 1;
TIM_TimeBaseStructure.TIM_Period = 665;//* Time base configuration *
TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);


/* PWM1 Mode configuration: Channel1 */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = CCR1_Val;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OC1Init(TIM3, &TIM_OCInitStructure);


TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);


TIM_ARRPreloadConfig(TIM3, ENABLE);
TIM_Cmd(TIM3, ENABLE);
}


int main(void)
{
RCC_Configuration();
GPIO_Configuration();
TIMER_Configuration();
delay_init(72);
lcd_init();

while (1)
{
CCR1_Val++;
TIM_OCInitStructure.TIM_Pulse = CCR1_Val;
delay_ms(200);

if(CCR1_Val>100)
CCR1_Val=0;

}
}

sigma-mx
25-08-2015, 21:29
هنوز نتونستم رو مد 8 بیتی و با پاییه های g0-7 ال سی دی n96 رو راه اندازی کنم
مگه قبلا نگفتی با پینهای G8 تا G15 می خوای کار کنی ؟! الان میگی 0 تا 7 !!

برای 8 تا 15 ،اینم یه امتحان کن:




GPIOG->BRR = 0xff00;
GPIOG->BSRR = data<<8;

ضمنا برای اطمینان میگم . برای کار تو مد 8 بیتی باید :
1- از پینهای DB10 تا DB17 استفاده بشه.
2- مد ال سی دی باید روی 8 بیت تنظیم بشه . توسط Hi کردن پین IM0 .

taktrashe
25-08-2015, 23:16
مقدار TIM_Pulse رو تو برنامم تغییر بدم که میزان نور رو نسبت

منظورتون از TIM_pulse چی هست ؟ شما داررید مقدار pwm رو تغییر میدید و درست کار میکنه !!

dostajn
27-08-2015, 08:08
سلام به همه دوستان .من یک برنامه pwm ساده نوشتم که نور یک led رو کنترل کنم برنامم به خوبی کار میکنه و میتونم نور led رو کنترل کنم اما نمتونم بعد از پیکر بندی timer وpwm ومقدار دادن به TIM_Pulse،مقدار TIM_Pulse رو تو برنامم تغییر بدم که میزان نور رو نسبت به یک پارامتر تغییر بدم.چطوری میتونم مقدارش رو تغییر بدم؟
#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "lcd4bit.h"
#include "stm32f10x_tim.h"
#include "delay.h"


TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
GPIO_InitTypeDef GPIO_initStructure;


uint16_t CCR1_Val = 10;
uint16_t PrescalerValue = 0;


void RCC_Configuration(void)
{ /* TIM3 clock enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
/* GPIOA and GPIOB clock enable */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_AP B2Periph_AFIO, ENABLE);
}


void GPIO_Configuration(void)
{
GPIO_initStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_initStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_initStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_initStructure);
}


void TIMER_Configuration (void)
{
CCR1_Val=CCR1_Val*6.65;


PrescalerValue = (uint16_t) (SystemCoreClock / 24000000) - 1;
TIM_TimeBaseStructure.TIM_Period = 665;//* Time base configuration *
TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);


/* PWM1 Mode configuration: Channel1 */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = CCR1_Val;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OC1Init(TIM3, &TIM_OCInitStructure);


TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);


TIM_ARRPreloadConfig(TIM3, ENABLE);
TIM_Cmd(TIM3, ENABLE);
}


int main(void)
{
RCC_Configuration();
GPIO_Configuration();
TIMER_Configuration();
delay_init(72);
lcd_init();

while (1)
{
CCR1_Val++;
TIM_OCInitStructure.TIM_Pulse = CCR1_Val;
delay_ms(200);

if(CCR1_Val>100)
CCR1_Val=0;

}
}
سلام
زیاد مطمئن نیستم اما شما اومدین به متغییر، یه عددی نسبت دادین نه به تایمر!!
اگه اینجوری که نوشتین درست باشه (که فکر نمی کنم) باید بعد از اون این ساختار به تایمر اعمال بشه با دستوری شبیه این:
TIM_OC1Init(TIM3, &TIM_OCInitStructure);
بهتره داخل تابع بالا رو ببینید. معمولا می تونید با نگاه کردن به نحوه مقدار دهی رجیستر ها، خودتون اون مقدار لازمو مستقیم اعمال کنید.

Hadi_ghr_e
27-08-2015, 12:11
مگه قبلا نگفتی با پینهای G8 تا G15 می خوای کار کنی ؟! الان میگی 0 تا 7 !!

برای 8 تا 15 ،اینم یه امتحان کن:




GPIOG->BRR = 0xff00;
GPIOG->BSRR = data<<8;

ضمنا برای اطمینان میگم . برای کار تو مد 8 بیتی باید :
1- از پینهای DB10 تا DB17 استفاده بشه.
2- مد ال سی دی باید روی 8 بیت تنظیم بشه . توسط Hi کردن پین IM0 .


سلام
روز همگی بخیر
عصبانی نشو مهندس
ممنون که وقت میگذاری
از db10-db17 استفاده کردم
با G0-7
مشکل سخت افزاری بود
اول باید به IM0 مقدار 1 میدادم بعد ال سی دی رو اینشیال میکردم که برعکس عمل کرده بودم
بازم ممنون که وقت گذاشتی
روز خوش

kavireloot
27-08-2015, 16:15
سلام
من موفق به راه اندازی spi شدم در واقع مشکل روی تنظیمات jlink در نرم افزار keil بود. حالا میخام از چیپ w5100 که یک رابط اترنت هست استفاده کنم که از طریق spi به میکرو وصل شده.
میخاستم بدونم چطور میشه از طریق spi رجیسترهای این چیپ رو مقدار دهی کرد و با چه دستوری؟
ممنون.

M.M.-T
29-08-2015, 14:30
سلام دوستان. واقعا متشکر از زحمات شما و مطالب بسیار مفیدی که قرار دادید.
سوالی که داشتم اینه که تمام جاهایی که من دیدم چند کانال adc رو با dma راه اندازی کردند. میخواستم بدونم آیا امکانش هست که اینکار رو بدون استفاده از dma انجام داد ؟

M.M.-T
31-08-2015, 11:51
سلام دوستان.
کسی تا بحال adc رو بیشتر از یک کانال با dma تست گرفته و نتیجه بگیره؟

taktrashe
31-08-2015, 12:42
وقت بخیر

با dma بهتر و راحت تر هست !! چون که نتیجه تبدیل در یک رجیستر ریخته میشه و بعد از تبدیل باید فوری برش داری در غیر این صورت با نتیجه بعدی پر میشه !! یا dma خودش نتایج رو برمیداره !! و جالبتر این که میتونی چند نمونه برداری رو خود کار بدون دخالت cpu انجام بدی ! من تست کردم خوب بوده !

M.M.-T
31-08-2015, 16:10
وقت بخیر

با dma بهتر و راحت تر هست !! چون که نتیجه تبدیل در یک رجیستر ریخته میشه و بعد از تبدیل باید فوری برش داری در غیر این صورت با نتیجه بعدی پر میشه !! یا dma خودش نتایج رو برمیداره !! و جالبتر این که میتونی چند نمونه برداری رو خود کار بدون دخالت cpu انجام بدی ! من تست کردم خوب بوده !

سلام دوست عزیز.
ممنون از پاسختون.
مسلما استفاده از dma در اینجور موارد بسیار عالی هست. خوب بود نمونه کدتون رو هم قرار میدادید که بنده و دیگر دوستان استفاده کنیم.
البته بنده از موقعی که سوالو پرسیدم تلاش کردم برای راه اندازیش و با کمک گرفتم از مثال cmsis تونستم جواب بگیرم.

gbg
14-09-2015, 00:12
سلام
اینم راه اندازی lcd گرافیکی با چیپ ks108 با کتابخانه های CMSIS.چیز خاصی نداره جز چندتا نکته:
1-یک پورت رو می تونین برای وصل به glcd انتخاب کنین
2-پورت انتخاب شده مورد نظر از پایه های (7....0) به خطوط دیتای glcd به ترتیب از (db0....db7) متصل می شوند مگر با تغییرات جزئی در سورس و بقیه پایه های کنترولی در کتابخانه مورد نظر به صورت دستی تعیین می شوند
در ایم مثال glcd به porta متصل است.

کامپایلر:iar

خیلی قدیمیه ولی من لایبری ks108 رو ندیدم توش

Hadi_ghr_e
15-09-2015, 12:27
سلام
کسی فارسی نویسی tft lcd n96 رو نداره؟
از هدراش سر در نمیارم
تشکر

Hadi_ghr_e
15-09-2015, 16:15
اینم لایببری السیدی n96 با اینترفیس 8 بیتی که از مجموع بسیاری از لایببری های میکرو های مختلف پورتش کردم . یکمی فقط رو سرعتش کار کردم بازم جای کار داره ...

یا حق
سلام
چطور میشه امکان فارسی نویسی رو بهش اضافه کرد؟

naeb
16-09-2015, 23:36
سلام به همه دوستان.من یدونه ماژول LCD گرافیکی از فروشگاه سایت خریدم که چیپ راه اندازش ssd1289 هستش یه چند تایی از اینترنت کتابخونه براش دانلود کردم اما ازشون نتیجه ای نتونستم بگیرم.
لطفا اگه قبلا تجربه ی کاربا این ماژول رو دارید منو راهنمایی کنید.
خیلی از همه شما ممنونم.

neo-salari
15-03-2016, 18:19
سلام٬
دوستان کسی یه مثال ساده (مثل hello world) با کتابخونه‌ی STemWin برای STM32f103 نداره؟
ممنون میشم.

PMA1717
09-05-2016, 15:51
سلام میشه این دو خط رو توضیح بدین؟const unsigned int init_leds = 0x1; // define var unsigned int leds = init_leds; // define var

ali_rostami_7
11-05-2016, 07:37
سلام دوست عزیز
عبارت سمت چپ یعنی: "const unsigned int init_leds = 0x1; // define var" یک ثابت با مقدار 1 را تعریف می کند که فایده ی این کار بالا بردن خوانایی و تغییر دادن آسان برنامه در آینده می باشد. در ادامه عبارت بعدی:"unsigned int leds = init_leds; // define var" یک متغیر از نوع صحیح بدون علامت تعریف می کند که با استفاده از ثابتی که تعریف کردیم آن را مقدار دهی اولیه می کند.
پی نوشت 1:
بهتر بود سوالتون رو در قسمت دیگری مطرح می کردید:
برنامه نویسی کامپیوتر/کنترل با کامپیوتر (You can see links before reply)
چراکه این سوال از مفاهیم ابتدایی برنامه نویسی است.
پی نوشت 2:
خواناتر نوشتن به بهتر جواب رسیدن خودتان و افزایش رغبت افراد برای پاسخ دهی کمک می کند.

PMA1717
31-05-2016, 19:54
سلام خدمت دوستان

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

Build target 'Target 1'
compiling main.c...
main.c: Error: C3065E: type of input file 'Liberary\CMSIS\CM3\CoreSupport' unknown
main.c:
main.c: Error: C3065E: type of input file 'Liberary\CMSIS\CM3\DeviceSupport\ST\STM32F10x' unknown
main.c:
main.c: Error: C3065E: type of input file 'Liberary\CMSIS\CM3\DeviceSupport\ST\STM32F10x\sta rtup' unknown
main.c:
Target not created

pes68
01-06-2016, 22:22
فرق interrupt mode با event mode در GPIO چی هست ؟
مرسی

PMA1717
07-06-2016, 08:11
سلام فایل led پروژه مربوط به سی دی کویر مربوط یه یرد آموزسی stm32f103ve هست

پروژه دوم پروژه کویر رو خودم ساختم که error میده

فایل سوم بر اساس آموزش ها یه برنامه با keil ساختم که با هم error میده

میشه نگاهشون بندازین و بهم بگین کجای کارم ایراذ ذاره

ممنون

gbg
31-08-2016, 13:00
سلام دوستان . ببخشید سرم شلوغ بود یکمی ..
اینم لایببری السیدی n96 - با اینترفیس 16 بیتی که قرار بود بزارم .. اگه مشکلی داشت بگید حل کنم . آخه اینو 1-2 ماه پیش کار می کردم ..

سلام
یه سوال اینکه با SSD1289 هم کار میکنه؟
دوم اینکه خطوط data کدومه چون مال من پشت سر هم نیستش

abtin1122
03-09-2016, 09:20
سلام دوستان
من یه مشکلی دارم که هر جا هم چک کردم مشکل از اونجا نبود
سه تا وقفه دارم برای چک کردن وصل بودن یه سری دکمه
دو تا هم تایمر دارم که یه سری چیز دیگه چک میکنه
مشکلم اینه که وقفه ها و تایمرا اگه همه روشن باشن میکرو قاطی میکنه و به اشتباه تشخیص میده دو تا کلید زده شدن
تو یه وقفه خاموش میکنم کلیدارو اماداخل یه تایمر فکر میکنه کلیدا رو شنن
ممکنه مشکل از کامپایلر یا پروگرامر باشه؟
هم کد درسته هم سخت افزار جفتشون چک شدن

dostajn
03-09-2016, 11:00
سلام دوستان
من یه مشکلی دارم که هر جا هم چک کردم مشکل از اونجا نبود
سه تا وقفه دارم برای چک کردن وصل بودن یه سری دکمه
دو تا هم تایمر دارم که یه سری چیز دیگه چک میکنه
مشکلم اینه که وقفه ها و تایمرا اگه همه روشن باشن میکرو قاطی میکنه و به اشتباه تشخیص میده دو تا کلید زده شدن
تو یه وقفه خاموش میکنم کلیدارو اماداخل یه تایمر فکر میکنه کلیدا رو شنن
ممکنه مشکل از کامپایلر یا پروگرامر باشه؟
هم کد درسته هم سخت افزار جفتشون چک شدن
سلام
صد در صد کد نویسی شما مشکل داره!

abtin1122
07-09-2016, 22:28
برنامه رو چند بار تست کردم مشکلش حل شد
جواب میده اما تا یه حلقه اضافه کنم یا حتی یه متغیرو عدد بدم یا کاری کنم که اصلا به اجزای دیگه مربوط نباشه بازم برنامه مشگل پیدا میکنه و کار نادرست انجام میده
از نظر کد مشکلی نداره
کد تست شده و کاملا دقیق کار میکنه
مشکلم فقط اینه که چیزی اضافه شه بهم میریزه

taha21
02-10-2016, 00:29
چند وقتی میشه که آموزش میکرو stm32f103 روشروع کردم برای شروع روی پروژه روشن کردن LED کار می کردم
بعد از مدتی مطالعه برنامه زیر رو نوشتم هیچ خطایی موقع کامپایل کردن ندارم فقط LED ها روشن نمیشن واقعا گیج شدم
نمی دونم اشکال کار کجاست. لطفا راهنماییم کنید
#include <stm32f10x.h>


int main(void)
{
RCC->APB2ENR|=RCC_APB2ENR_IOPBEN; // Enable GPIOB Clock
RCC->APB2ENR|=RCC_APB2ENR_IOPFEN; // Enable GPIOF Clock


GPIOB->CRL=0x00000003; // GPIOB.1 AS push-pull output 50mhz
GPIOB->BSRR=0x00000001; // Set GPIOB.1

GPIOF->CRL=0x03000000; // GPIOF.6 AS push-pull output 50mhz
GPIOF->BSRR=0x00000040; // Set GPIOF.6



while(1)
{
}
}

hhhmmm
08-11-2016, 14:27
سلام
من یک برد با هی سی stm32f103rbt6 دارم . وقتی spi1 dma و usart2 را باهم راه اندازی میکنم مشکل پیدا میکنه
اگه راهنمایی کنید ممنون می شم