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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM32溫度檢測實(shí)驗(yàn)

[復(fù)制鏈接]
ID:258894 發(fā)表于 2017-12-8 00:46 | 顯示全部樓層 |閱讀模式
實(shí)驗(yàn)三
一、實(shí)驗(yàn)?zāi)康?/div>
1 了解模擬量采樣的硬件電路;
2 熟悉 AD 的結(jié)構(gòu),掌握 AD 寄存器的使用方法;
3 掌握正確配置引腳的方法,實(shí)現(xiàn)指定功能;
4 熟悉串口的機(jī)制,掌握串口寄存器的使用方法;
5 實(shí)現(xiàn)模擬量采樣,并將采樣結(jié)果通過串口上傳至 PC 端。
二、實(shí)驗(yàn)內(nèi)容
(1) 運(yùn)行AD 示例程序, 正確配置 PA0 引腳,實(shí)現(xiàn) AD 采樣功能;
(2) 運(yùn)行 UART3 示例程序, 正確配置串口 3, 實(shí)現(xiàn)數(shù)據(jù)通過串口上傳 PC;
(3) 按照實(shí)驗(yàn)要求編寫應(yīng)用程序。
三、實(shí)驗(yàn)中所用到的主要外設(shè)及其寄存器的簡要說明
1ADC模數(shù)轉(zhuǎn)換模塊:
用來采集PA0口的電壓值,并將其轉(zhuǎn)換為數(shù)字量(0~4095)存放在ADC的DR寄存器中。
2DMA直接內(nèi)存訪問模塊:
用來將ADC的DR寄存器中的值拷貝到內(nèi)存中。
3)四位數(shù)碼管模塊:
用來顯示ADC采集到的電壓值。接GPIOE.PIN[0:11]。其中GPIO.PIN[0:7]為段選端,分別對應(yīng)某一位數(shù)碼管的a-f, dp 段。DPIO.PIN[8:11]為位選端,分別對應(yīng)從左至右第1-4位數(shù)碼管。
4USART3串口模塊:
用來將ADC采集到的電壓值通過USART3發(fā)送給電腦。通過軟件將電壓值轉(zhuǎn)換為四位字符數(shù)組,然后按字符放入U(xiǎn)SART3的DR寄存器中。等待硬件控制自動(dòng)發(fā)送。等到USART3的SR寄存器的TC位置位后把下一位字符放入DR寄存器。直到四位字符全部發(fā)送完成。
5)定時(shí)器TIM3
用來為數(shù)碼管計(jì)時(shí),溢出周期是1ms。當(dāng)計(jì)時(shí)器溢出時(shí)觸發(fā)中斷,點(diǎn)亮相應(yīng)位的數(shù)碼管,顯示數(shù)字是步數(shù)的相應(yīng)位。
6)定時(shí)器TIM2
用來為ADC采樣計(jì)時(shí),溢出周期時(shí)500ms。當(dāng)計(jì)時(shí)器溢出時(shí)觸發(fā)中斷,開始一次ADC采樣。
四、程序框圖


五、核心程序
1main.c
#include "stm32f10x.h"
#include "adc.h"
#include "dma.h"
#include "nixie_tubes.h"
#include "tim.h"
#include "usart.h"
#include "led.h"
#include "stdio.h"


#define ADC_DATA_LEN 1

USART_Data data;

int main()
{
    data.flag = 1;                                                

   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    Adc1_Init();
    Dma_Init((u32) &(ADC1->DR), (u32) &(data.dint), ADC_DATA_LEN);
    USART3_Init(115200);
    USART_NVIC_init();
   Tim2_DelayMs_Init(500);

    NixieTube_Init();
   Tim3_Display_Init();

    TIM_Cmd(TIM2, ENABLE);
    TIM_Cmd(TIM3, ENABLE);

    while(1)
    {
        while(data.flag == 0);                  //Wait until data flag was set
        sprintf(data.dchar, "%4d", data.dint);  //Transform the type of data from int into 4 characters
       Usart_send_datas(data.dchar);           //Send data.dchar to USART3
        data.flag = 0;                         //Reset data flag
    }

}
2tim.c
//定時(shí)器2中斷服務(wù)程序
void TIM2_IRQHandler(void)   //TIM2中斷
{
    if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)  //檢查TIM2更新中斷發(fā)生與否
        {
           TIM_ClearITPendingBit(TIM2, TIM_IT_Update  );  //清除TIMx更新中斷標(biāo)志
           ADC_SoftwareStartConvCmd(ADC1, ENABLE);     //使能指定的ADC1的軟件轉(zhuǎn)換啟動(dòng)功能   
            //MyDMA_Start_Once();
            data.flag = 1;
        }
}

//TIM3 for delay
void TIM3_IRQHandler(void)
{
    if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)  //檢查TIM2更新中斷發(fā)生與否
    {
       TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );
        if(data_bit == 0) data_bit = 4;

        switch(data_bit)
        {
            case 1: {Nixietube_light(1, data.dchar[0]);break;}
            case 2: {Nixietube_light(2, data.dchar[1]);break;}
            case 3: {Nixietube_light(3, data.dchar[2]);break;}
            case 4: {Nixietube_light(4, data.dchar[3]);break;}

            default: break;
        }

        data_bit -= 1;
    }   

}
3usart.c
u8 Usart_send_datas(u8* data)
{
     u16 k = 0;

     for(k=0; *(data + k) != '\0'; k++)
     {
        USART_SendData(USART3,*(data + k));
         while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET);
     }
       USART_SendData(USART3, 0x0d);
        while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET);
       USART_SendData(USART3, 0x0a);
        while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET);

     return 0;

}
回復(fù)

使用道具 舉報(bào)

ID:259099 發(fā)表于 2017-12-8 15:37 | 顯示全部樓層

好東西  值得擁有

評分

參與人數(shù) 1黑幣 +1 收起 理由
嘿嘿額黑 + 1 回帖助人的獎(jiǎng)勵(lì)!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:259103 發(fā)表于 2017-12-8 15:59 | 顯示全部樓層
好棒 樓主好贊
回復(fù)

使用道具 舉報(bào)

ID:259068 發(fā)表于 2017-12-8 16:00 | 顯示全部樓層
很有用
回復(fù)

使用道具 舉報(bào)

ID:259103 發(fā)表于 2017-12-8 16:00 | 顯示全部樓層
樓主好贊
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 羞羞羞视频 | 久久999 | 中文字幕不卡在线观看 | 精品久久1| 亚洲视频免费在线观看 | 久久久久99| 国产精品一区二区三区久久 | 免费观看一区二区三区毛片 | 午夜精品一区二区三区在线播放 | 国产99久久精品一区二区300 | 成人免费视频网站在线观看 | 亚洲欧美激情网 | 免费av观看| 亚洲国产精品久久久 | 中文字幕在线看人 | 免费在线视频一区二区 | 人人擦人人 | 久在线| 91社区在线观看 | 成人在线a | 成人欧美一区二区三区1314 | 91麻豆产精品久久久久久 | 成年人国产在线观看 | 日本久久视频 | 暖暖成人免费视频 | 久久精品国产99国产 | 91精品一区| 亚洲一区二区精品视频 | 天天天操操操 | 日韩成人高清在线 | 亚洲视频在线观看 | 亚洲国产日韩欧美 | 韩日一区二区三区 | 亚洲精品福利在线 | 在线成人免费观看 | 99日韩 | 亚洲精品国产偷自在线观看 | 国产一区二区三区四区五区加勒比 | 亚洲高清视频一区二区 | 99精品一区二区 | 成人在线免费视频 |