一、實驗?zāi)康?/div>
(1) 了解模擬量采樣的硬件電路;
(2) 熟悉 AD 的結(jié)構(gòu),掌握 AD 寄存器的使用方法;
(3) 掌握正確配置引腳的方法,實現(xiàn)指定功能;
(4) 熟悉串口的機制,掌握串口寄存器的使用方法;
(5) 實現(xiàn)模擬量采樣,并將采樣結(jié)果通過串口上傳至 PC 端。
二、實驗內(nèi)容
(1) 運行AD 示例程序, 正確配置 PA0 引腳,實現(xiàn) AD 采樣功能;
(2) 運行 UART3 示例程序, 正確配置串口 3, 實現(xiàn)數(shù)據(jù)通過串口上傳 PC;
(3) 按照實驗要求編寫應(yīng)用程序。
三、實驗中所用到的主要外設(shè)及其寄存器的簡要說明
(1)ADC模數(shù)轉(zhuǎn)換模塊:
用來采集PA0口的電壓值,并將其轉(zhuǎn)換為數(shù)字量(0~4095)存放在ADC的DR寄存器中。
(2)DMA直接內(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ù)碼管。
(4)USART3串口模塊:
用來將ADC采集到的電壓值通過USART3發(fā)送給電腦。通過軟件將電壓值轉(zhuǎn)換為四位字符數(shù)組,然后按字符放入USART3的DR寄存器中。等待硬件控制自動發(fā)送。等到USART3的SR寄存器的TC位置位后把下一位字符放入DR寄存器。直到四位字符全部發(fā)送完成。
(5)定時器TIM3:
用來為數(shù)碼管計時,溢出周期是1ms。當(dāng)計時器溢出時觸發(fā)中斷,點亮相應(yīng)位的數(shù)碼管,顯示數(shù)字是步數(shù)的相應(yīng)位。
(6)定時器TIM2:
用來為ADC采樣計時,溢出周期時500ms。當(dāng)計時器溢出時觸發(fā)中斷,開始一次ADC采樣。
四、程序框圖
五、核心程序
(1)main.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
}
}
(2)tim.c
//定時器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)換啟動功能
//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;
}
}
(3)usart.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;
}
作者: Janzen
時間: 2017-12-8 15:37
好東西 值得擁有
作者: 嘿嘿額黑
時間: 2017-12-8 15:59
好棒 樓主好贊
作者: y382246268
時間: 2017-12-8 16:00
很有用
作者: 嘿嘿額黑
時間: 2017-12-8 16:00
樓主好贊
歡迎光臨 (http://m.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
久草免费福利
|
中文字幕在线观看不卡
|
97人人干
|
韩日一区二区
|
欧美午夜精品
|
亚洲精品一级
|
国产网址
|
国产一区二区网站
|
免费看毛片网站
|
日韩精品视频免费播放
|
2018天天操
|
欧美一级片免费
|
久久久久国产一区二区三区
|
国产一区二区三区视频在线
|
亚洲精品www久久久久久广东
|
黄色1级视频
|
狠狠干网|
黄色免费观看网站
|
最新国产在线视频
|
日韩黄色一级
|
亚洲黄色网址
|
国产又色又爽又黄又免费
|
国产日韩免费
|
亚洲欧洲视频
|
va视频
|
免费在线观看av
|
aaa国产精品
|
久久免费看片
|
成人不卡
|
成人爽a毛片一区二区免费
www.欧美精品
|
综合网久久
|
少妇性bbb搡bbb爽爽爽欧美
|
国产激情一区二区三区
|
欧美福利一区
|
av网址在线
|
国产成人精品一区二区三区在线
|
国产成人在线免费视频
|
91女人18毛片水多国产
|
久久精品视频一区二区
|
波多野结衣一区二区三区在线观看
|
在线免费看黄色
|