আমি কীভাবে stm32 থেকে "নতুন" এইচএল লাইব্রেরিটি ব্যবহার করব তা শিখার চেষ্টা করছি।
আমি যখন সাধারণ এডিসি রূপান্তর করার চেষ্টা করি এটি কেবল একবারে কাজ করে তবে তা রূপান্তর বন্ধ করে দেয়। আমার ধারণা ধরণের রূপান্তর পতাকাটি সেট না হয়ে যায়। আমি STM32f429I ডিসকভারি বোর্ড ব্যবহার করছি, যা বোর্ডে STM32f429ZI রয়েছে।
নোট করুন যে আমি স্প্রিন্টফ সম্পর্কে খারাপ অভ্যাস হওয়া এবং বিঘ্নিত হয়ে এডিসি তৈরি করা ভাল, আমি জানি যে দয়া করে এটি উল্লেখ করবেন না, এটি প্রশ্নের সাথে প্রাসঙ্গিক নয়, আমি এখানে কেবল এইচএএল পরীক্ষা করছি।
সুতরাং প্রশ্নটি হল কেন ইওসি পতাকা সেট করা হয়নি বা এটি কাজ করতে আমি কী করতে পারি? গুগলিং খুব ভাল সহায়তা করছে না যেহেতু এইচএএল সম্পর্কে খুব কম ভাল উপকরণ আছে।
কোডটি এখানে:
__IO uint16_t ADCValue=0;
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc);
int main(void)
{
char str[15];
/* Various initializations */
HAL_ADC_Start(&hadc1);
while (1)
{
if (HAL_ADC_PollForConversion(&hadc1, 1000000) == HAL_OK)
{
ADCValue = HAL_ADC_GetValue(&hadc1);
sprintf(str, "%d", ADCValue);
BSP_LCD_DisplayStringAt(130,30, (uint8_t*)str, LEFT_MODE);
}
}
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
ADCValue = HAL_ADC_GetValue(&hadc1);
}
আমি কিউবিএমএক্স দিয়েও প্রকল্পটি তৈরি করেছি, অ্যাডিসি কনফিগারেশনটি নিম্নলিখিত:
সম্পাদনা 1
আমি সমস্ত কিছু ডিবাগ করার চেষ্টা করেছি এবং দেখে মনে হচ্ছে যে প্রোগ্রামটি ইওসি পতাকাটির জন্য যাচাই করতে আটকে গেছে - এটি দেখায় যে এটি প্রদর্শিত হয়নি এবং তাই টাইপ করে ইওসিটি প্রদর্শিত হওয়ার অপেক্ষায় রয়েছে (তবে এটি কখনই সেট হয় না) এখানে কোডটি এখানে রয়েছে ডিবাগারে আটকে যায়:
/* Check End of conversion flag */
while(!(__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_EOC)))
{
/* Check for the Timeout */
if(Timeout != HAL_MAX_DELAY)
{
if((Timeout == 0)||((HAL_GetTick() - tickstart ) > Timeout))
{
hadc->State= HAL_ADC_STATE_TIMEOUT;
/* Process unlocked */
__HAL_UNLOCK(hadc);
return HAL_TIMEOUT;
}
}