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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2716|回復: 1
打印 上一主題 下一主題
收起左側

stm32DMA中斷采集多路ADC數據+OLED12864漢字顯示

[復制鏈接]
跳轉到指定樓層
樓主
ID:521503 發表于 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; //電壓數據
//unsigned short ADResult;

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

        /* 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個延時周期

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

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

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

}

/**
  * @brief  用戶任務調度定時器初始化.
  *                                        周期1ms.
  *                                        使能更新中斷.
        * @參數   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時間設定

        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  用戶任務調度定時器更新中斷.
  *                                        啟動ADC轉換.
  *                                        軟定時器更新.
        * @參數   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);//運
        OLED_ShowCHinese(18,4,20);//行
        OLED_ShowCHinese(36,4,21);//時
        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); //電壓數據轉換
                        wd = ((ADResult[1].avg*3300)/4096);
                        Display_data(50,6,temp,0); //OLED打印電壓數據
                        Display_data(50,4,wd,0); //OLED打印電壓數據
                }
        }
}


DMA_ADC.7z

180.82 KB, 下載次數: 55, 下載積分: 黑幣 -5

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

使用道具 舉報

沙發
ID:469589 發表于 2022-11-6 09:32 | 只看該作者
漢字顯示有做查表的沒?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产电影一区二区在线观看 | 国产成人精品亚洲日本在线观看 | 黄免费在线 | 成人精品一区 | 91国内产香蕉 | 免费的av网站| 日韩三级免费观看 | 玖玖视频免费 | 高清一区二区视频 | 成人在线免费电影 | 黄色片网站在线观看 | 欧美日韩国产高清视频 | 久久久久久一区 | 中文字幕第二区 | 成人在线免费视频观看 | 女人毛片a毛片久久人人 | 成人国产精品久久久 | 成人国产综合 | www.日韩av.com | 91亚洲国产成人久久精品网站 | 亚洲天堂影院 | 国产伦一区二区三区视频 | 日韩国产一区二区三区 | 中文字幕色站 | 嫩呦国产一区二区三区av | 岛国视频| 99国产精品99久久久久久 | 日韩综合在线视频 | 精品国产一区一区二区三亚瑟 | 日日摸夜夜添夜夜添精品视频 | 久久精品国产久精国产 | 日本电影一区二区 | 九九视频网 | .国产精品成人自产拍在线观看6 | 在线观看日韩精品视频 | 特黄毛片| 99九九视频 | 日日夜夜狠狠操 | 欧洲高清转码区一二区 | 日韩毛片在线视频 | 韩国电影久久 |