سلام دوستان.
من تازه کار با آرم رو شروع کردم برا همین سوالاتم شاید خیلی ساده باشن. من پیشاپیش معذرت میخوام
سه تا مشکلی که دارم.
1- از برد اموزشی فروشگاه، STM32F103 استفاده میکنم و یه دونه سنسور LM35 و یدونه ولوم رو به ADC متصل کردم. با زیاد کردن ولوم، دما هم چند درجه زیاد میشه. این مشکل از کجاست؟ سخت افزاریه یا نرم افزاریه؟
این دستورات من برا خوندن ADCهست:
سوال دوم:
برا ایجاد تاخیر با حلقه FOR، این دستور چند کلاک لازم داره؟
سوال سوم:
میخوام تو وقفه خارجی به یه متغیر مقدار بدم و از اون متغییر تو تابعmainاستفاده کنم. من متغییرم رو تو تایع مین تعریف میکنم ولی وقتی میخوام تو وقفه خارجی اون رو بخونم، متغییر رو نمیشناسه.
من با نرم افزار کیل کار میکنم و برا نوشتن تو تابع وقفه از کتابخونه#include "stm32f1xx_it.h" استفاده میکنم. آیا اصلا این روش درسته،
ممنون از همه دوستان
من تازه کار با آرم رو شروع کردم برا همین سوالاتم شاید خیلی ساده باشن. من پیشاپیش معذرت میخوام
سه تا مشکلی که دارم.
1- از برد اموزشی فروشگاه، STM32F103 استفاده میکنم و یه دونه سنسور LM35 و یدونه ولوم رو به ADC متصل کردم. با زیاد کردن ولوم، دما هم چند درجه زیاد میشه. این مشکل از کجاست؟ سخت افزاریه یا نرم افزاریه؟
این دستورات من برا خوندن ADCهست:
کد:
[FONT=Yekan]hadc1.Init.NbrOfConversion=2;///////////channel of read[/FONT] HAL_ADC_Init(&hadc1);/////channel init HAL_ADC_Start(&hadc1);//////start adc HAL_ADC_PollForConversion(&hadc1,10);/////time for ready temp=HAL_ADC_GetValue(&hadc1);//////////get value HAL_ADC_Stop(&hadc1);///////stop adc temp*=0.107; hadc1.Init.NbrOfConversion=1;///////////channel of read HAL_ADC_Init(&hadc1);/////channel init HAL_ADC_Start(&hadc1);//////start adc HAL_ADC_PollForConversion(&hadc1,10);/////time for ready adc=HAL_ADC_GetValue(&hadc1);//////////get value [FONT=Yekan]HAL_ADC_Stop(&hadc1);///////stop adc[/FONT]
کد:
[FONT=Yekan]hadc1.Instance = ADC1;[/FONT] hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE; hadc1.Init.ContinuousConvMode = DISABLE; hadc1.Init.DiscontinuousConvMode = DISABLE; hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc1.Init.NbrOfConversion = 2; HAL_ADC_Init(&hadc1); /**Configure Regular Channel */ sConfig.Channel = ADC_CHANNEL_1; sConfig.Rank = 2; sConfig.SamplingTime = ADC_SAMPLETIME_55CYCLES_5; HAL_ADC_ConfigChannel(&hadc1, &sConfig); /**Configure Regular Channel */ sConfig.Channel = ADC_CHANNEL_0; sConfig.Rank = 1; sConfig.SamplingTime = ADC_SAMPLETIME_55CYCLES_5; [FONT=Yekan] HAL_ADC_ConfigChannel(&hadc1, &sConfig);[/FONT]
برا ایجاد تاخیر با حلقه FOR، این دستور چند کلاک لازم داره؟
کد:
for(i=0;i<1000;++i);
میخوام تو وقفه خارجی به یه متغیر مقدار بدم و از اون متغییر تو تابعmainاستفاده کنم. من متغییرم رو تو تایع مین تعریف میکنم ولی وقتی میخوام تو وقفه خارجی اون رو بخونم، متغییر رو نمیشناسه.
من با نرم افزار کیل کار میکنم و برا نوشتن تو تابع وقفه از کتابخونه#include "stm32f1xx_it.h" استفاده میکنم. آیا اصلا این روش درسته،
ممنون از همه دوستان
دیدگاه