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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2750|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:521503 發(fā)表于 2019-12-15 15:12 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#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  用戶(hù)任務(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  用戶(hù)任務(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

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:469589 發(fā)表于 2022-11-6 09:32 | 只看該作者
漢字顯示有做查表的沒(méi)?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 免费午夜电影 | 午夜爽爽爽男女免费观看影院 | 色网站视频| 四季久久免费一区二区三区四区 | 久久综合一区二区 | 天天干天天色 | 免费一级欧美在线观看视频 | 免费视频二区 | 亚洲一区精品视频 | 色视频网站 | 高清免费在线 | 91精品国产91久久综合桃花 | 亚洲国产黄 | 青青草av在线播放 | 精品日韩一区二区三区av动图 | 毛片视频观看 | 91精品久久久久久久久久 | 国产高清免费 | 国产精品视频入口 | 国产欧美精品区一区二区三区 | 欧美国产精品一区二区 | 欧美一区二区三区四区视频 | 精品欧美一区二区精品久久久 | 亚洲精品视频播放 | 欧美特级黄色 | 91精品国产综合久久精品 | 国产二区精品视频 | 国产精品久久久久久婷婷天堂 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 中文av在线播放 | 91伊人 | 精品一区二区免费视频 | 日本免费小视频 | 亚洲欧美bt | 日韩综合在线 | 国产精品毛片一区二区三区 | 日韩久久精品 | 亚洲av毛片 | 99久久精品国产麻豆演员表 | 成人国产精品久久 | 一级一级一级毛片 |