久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: stm32DMA中斷采集多路ADC數(shù)據(jù)+OLED12864漢字顯示 [打印本頁]

作者: 曉風(fēng)/殘?jiān)?nbsp;   時(shí)間: 2019-12-15 15:12
標(biāo)題: stm32DMA中斷采集多路ADC數(shù)據(jù)+OLED12864漢字顯示
#include "stm32f10x.h"
#include "OLED12864.h"
#include "comm.h"
#include "keyled.h"

Systemtypedef                System;
ADCtypedef                        ADResult[2];
extern u32  ADC_BUF[2];
u32 temp=0; //電壓數(shù)據(jù)
//unsigned short ADResult;

/**
  * @brief  STM32時(shí)鐘系統(tǒng)初始化
        *                                        SYSClk= 72MHz
        *                                        APB1         = 36MHz
        *                                        APB2         = 72MHz
        *                                        AHB         = 72MHz
        *                                        ADC_Clk = 18MHz
        * @參數(shù)   None
  * @返回值 None
  */
void Stm32_Clock_Init(void)
{
        RCC->CR|=0x00010000;          //外部高速時(shí)鐘使能HSEON
        while(!(RCC->CR>>17));        //等待外部時(shí)鐘就緒

        /* PLL=9*HSE OSC,        APB1=AHB/DIV2, APB2=AHB/DIV1,        ADC_Clk = APB2/4 */
        RCC->CFGR=0X1C4400;
        RCC->CFGR|=1<<16;                          //HSE as PLLSRC

        FLASH->ACR|=0x32;                          //FLASH 2個(gè)延時(shí)周期

        RCC->CR|=0x01000000;          //PLLON
        while(!(RCC->CR>>25));        //等待PLL鎖定

        RCC->CFGR|=0x00000002;        //PLL作為系統(tǒng)時(shí)鐘
        while((RCC->CFGR & 0x0c) != 0x08);        //wait,PLL used as system clock
}

void SystemVar_Init(void)
{
        System.HPriTime = 0;
        System.LPriTime = 0;

}

/**
  * @brief  用戶任務(wù)調(diào)度定時(shí)器初始化.
  *                                        周期1ms.
  *                                        使能更新中斷.
        * @參數(shù)   None
  * @返回值 None
  */
void UserTaskTimer_Init(void)
{
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;                //???

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

        TIM_TimeBaseStructure.TIM_Prescaler                 = 71;
        TIM_TimeBaseStructure.TIM_Period                                 = 1000;//1ms時(shí)間設(shè)定

        TIM_TimeBaseStructure.TIM_ClockDivision = 0;
        TIM_TimeBaseStructure.TIM_CounterMode         = TIM_CounterMode_Up;
        TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

        TIM_ClearITPendingBit(TIM3,        TIM_IT_Update);
        TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);

        {
                NVIC_InitTypeDef    NVIC_InitStructure;

                NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
                NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
                NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
                NVIC_InitStructure.NVIC_IRQChannelCmd        =        ENABLE;
                NVIC_Init(&NVIC_InitStructure);
        }

        TIM_Cmd(TIM3, ENABLE);
}

/**
  * @brief  用戶任務(wù)調(diào)度定時(shí)器更新中斷.
  *                                        啟動(dòng)ADC轉(zhuǎn)換.
  *                                        軟定時(shí)器更新.
        * @參數(shù)   None
  * @返回值 None
  */
void TIM3_IRQHandler(void)
{
        static u32 TimeCount = 0;                                                //???
        if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
        {
                TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
                TimeCount++;
               
                if(TimeCount % HPRITASK_TIME_MS == 0)                System.HPriTime = 1;               
                if(TimeCount % LPRITASK_TIME_MS == 0)                System.LPriTime = 1;

        }
}

int main(void)
{
        u32 wd;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        Stm32_Clock_Init();

        SystemVar_Init();
        
        LED_Init();
        
        AD_init();
        ADvar_init();
        
        UserTaskTimer_Init();

         OLED_Init();
        OLED_Fill(0);
//        OLED_P8x16Str(0,0,"BLDC CLOSED LOOP");
//        OLED_P8x16Str(5,2,"Targe:      rpm");
////        OLED_P8x16Str(5,4,"Real :      rpm");
////        OLED_P8x16Str(5,6,"VBUS :      mV");
//        OLED_P8x16Str(5,6,"D_Y :      mV");
//        OLED_P8x16Str(5,4,"W_D :      mV");
        OLED_ShowCHinese(0,4,19);//運(yùn)
        OLED_ShowCHinese(18,4,20);//行
        OLED_ShowCHinese(36,4,21);//時(shí)
        OLED_ShowCHinese(54,4,22);//間
        OLED_ShowCHinese(72,4,13);//
        LED1 = LED2 = LED3 = 0;
        LED4 = LED5 = 1;
        while(1)
        {
                if(System.HPriTime)
                {
                        System.HPriTime = 0;
                        // do something
                        LED2 = !LED2;
                }
                else if(System.LPriTime)
                {        
                        //刷新HMI信息
                        System.LPriTime = 0;
                        temp = ((ADResult[0].avg*3300)/4096); //電壓數(shù)據(jù)轉(zhuǎn)換
                        wd = ((ADResult[1].avg*3300)/4096);
                        Display_data(50,6,temp,0); //OLED打印電壓數(shù)據(jù)
                        Display_data(50,4,wd,0); //OLED打印電壓數(shù)據(jù)
                }
        }
}


DMA_ADC.7z

180.82 KB, 下載次數(shù): 55, 下載積分: 黑幣 -5


作者: GlenXu    時(shí)間: 2022-11-6 09:32
漢字顯示有做查表的沒?




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: www性色| 午夜视频在线播放 | 久久夜视频| 欧美激情国产精品 | aaaaaa大片免费看最大的 | 黄色三级免费网站 | 欧美视频区| 国产精品久久久久久久岛一牛影视 | 久久精品国产一区 | 午夜精品一区二区三区在线观看 | 国产一级片免费视频 | 久久精品二区亚洲w码 | 涩涩视频在线观看 | 成人午夜性成交 | 欧美精品久久久久 | 黄色片免费在线观看 | 成人av在线播放 | 欧美日韩在线观看一区二区三区 | 久久久久国产一级毛片高清网站 | 亚洲一区二区三区四区五区中文 | 四虎永久免费黄色影片 | 亚洲va在线va天堂va狼色在线 | 亚洲精品中文字幕中文字幕 | 亚洲视频三区 | 国产精品久久久久久久久久三级 | 亚洲综合久久久 | 婷婷中文字幕 | 日韩精品一区二区三区第95 | 亚洲一区三区在线观看 | 国产美女精品 | 蜜桃在线一区二区三区 | 亚洲天堂免费在线 | 亚洲情侣视频 | 欧美精品久久久 | 日韩欧美在线不卡 | 欧美一区二区三区视频 | 日本五月婷婷 | 久久精品国产一区二区电影 | 中文字幕一区二区三区不卡在线 | 久久久久久一区 | h视频在线看 |