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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2844|回復(fù): 1
收起左側(cè)

stm32DMA中斷采集多路ADC數(shù)據(jù)+OLED12864漢字顯示

[復(fù)制鏈接]
ID:521503 發(fā)表于 2019-12-15 15:12 | 顯示全部樓層 |閱讀模式
#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

回復(fù)

使用道具 舉報(bào)

ID:469589 發(fā)表于 2022-11-6 09:32 | 顯示全部樓層
漢字顯示有做查表的沒?
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久国产精品99久久久久久丝袜 | 色综合久 | 国产成人jvid在线播放 | 欧美亚洲在线视频 | 国产精品色一区二区三区 | 全部免费毛片在线播放网站 | 91麻豆精品国产91久久久久久久久 | 色爱综合网 | 欧美日一区二区 | 99精品一区二区三区 | 国产美女视频黄a视频免费 国产精品福利视频 | 婷婷色网 | 亚洲国产精品成人 | 中文字幕99 | 99re视频在线观看 | 亚洲成人综合社区 | 日韩欧美在线播放 | 91高清视频在线观看 | 欧美v免费 | 亚洲精品色 | 色婷婷综合久久久久中文一区二区 | av网站在线免费观看 | 五月综合激情婷婷 | 欧美一级在线 | 欧美成人性生活 | 日本久久精品 | 成人性视频免费网站 | 午夜免费视频 | www操操 | 黄视频免费观看 | 久久亚洲精品国产精品紫薇 | 精品九九 | 国产一区在线视频 | 国产成人精品视频在线观看 | 亚洲成人一区二区三区 | 一区二区av | 亚洲欧美精品久久 | 午夜精品久久久久久久久久久久 | 欧美精品久久久久久久久久 | 中文字幕日韩欧美一区二区三区 | 日韩欧美综合 |