久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
Proteus仿真stm32讀取ADC源程序
[打印本頁]
作者:
仰天大笑出門去
時間:
2019-5-12 13:43
標題:
Proteus仿真stm32讀取ADC源程序
stm32課程的一個項目,用protues仿真stm32讀取ADC,做完之后把這些分享下來。
0.png
(31.91 KB, 下載次數: 136)
下載附件
2019-5-12 15:50 上傳
單片機源程序如下:
//#include "main.h"
#include "stm32f10x.h"
#include "stm32f10x_it.h"
#include <stdio.h>
#define ADC1_DR_Address ((uint32_t)0x40012400+0x4C)
u8 seg_table[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0x39,0x5e,0x79,0x71}; //共陰極表
uint16_t ADCConvertedValue;
uint32_t DMA_ADC_OK;
void NVIC_Config(void);
void ADC_Config(void);
void delay(void);
void xdelay(void);
void GPIO_Config(void);
u16 Get_Adc(u8 ch);
//u16 Get_Adc_Average(u8 ch,u8 times);
int main(void)
{
float temp=0;
DMA_ADC_OK = 0;
NVIC_Config();
SysTick_Config(72000);
ADC_Config();
GPIO_Config();
while(1)
{
int p,q;
// GPIO_ResetBits(GPIOA,GPIO_Pin_8);
// GPIO_ResetBits(GPIOD,GPIO_Pin_2);
// delay();
// GPIO_SetBits(GPIOA,GPIO_Pin_8);
// GPIO_SetBits(GPIOD,GPIO_Pin_2);
// delay();
if(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)!= RESET)
{
DMA_ADC_OK = 1;
ADC_ClearFlag(ADC1, ADC_FLAG_EOC);
}
if(DMA_ADC_OK)
{
ADCConvertedValue=ADC_GetConversionValue(ADC1);
//ADCConvertedValue=Get_Adc(ADC_Channel_1);
temp = (float)ADCConvertedValue* (3.3/4096);
if (temp>=1)
{
temp=temp+1;
//GPIO_WriteBit(GPIOA,GPIO_Pin_3,
// (BitAction)((1-GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_3))));
p=(int)temp;
temp=(temp-p)*10;
q=(int)temp;
GPIOB->ODR=0xfa; // 高位
GPIOC->ODR=seg_table[p];
xdelay();
GPIOB->ODR=0xfd; // 低位
GPIOC->ODR=seg_table[q];
xdelay();
}
else {
temp=temp*10;
q=(int)temp;
GPIOB->ODR=0xfa; // 高位
GPIOC->ODR=0xc0;
xdelay();
GPIOB->ODR=0xfd; // 低位
GPIOC->ODR=seg_table[q+1];
xdelay();
}
}
}
}
/*NVIC??*/
void NVIC_Config(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
/* DMA??NVIC?? */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitStructure.NVIC_IRQChannel = ADC1_2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
void ADC_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
ADC_InitTypeDef ADC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_ADC1, ENABLE);//PC4
RCC_ADCCLKConfig(RCC_PCLK2_Div6);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
ADC_DeInit(ADC1);
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel = 1;
ADC_Init(ADC1, &ADC_InitStructure);
ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_55Cycles5);
ADC_Cmd(ADC1, ENABLE); //使能指定的ADC1
ADC_ITConfig(ADC1, ADC_IT_EOC, ENABLE);
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
}
void delay(void)
{
int i=0xffa;
while(i--);
}
void xdelay(void)
{
int i=0xfff;
while(i--);
}
void GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* GPIOD Periph clock enable */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//PC4
/* Configure PD2 in output pushpull mode */
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
// GPIO_Init(GPIOA, &GPIO_InitStructure);//PD2????,?????
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);//PD2????,?????
/* Configure PD2 in output pushpull mode */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);//PD2????,?????
// RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//PC4
// /* Configure PD2 in output pushpull mode */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);//PD2????,?????
//
// /* Configure PA8 in output pushpull mode */
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
// GPIO_Init(GPIOC, &GPIO_InitStructure);//PD2????,?????
}
void xianshi(float x)
{ GPIO_InitTypeDef GPIO_InitStructure; //定義一個管腳初始化的結構體
//開啟PA口時鐘
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
//配置PA所有的模式
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
}
void ADC1_2_IRQHandler(void)
{
if(ADC_GetITStatus(ADC1, ADC_IT_EOC)!= RESET)
{
DMA_ADC_OK=1;
ADC_ClearITPendingBit(ADC1, ADC_IT_EOC);
}
}
復制代碼
所有資料51hei提供下載:
keil.zip
(325.06 KB, 下載次數: 358)
2019-5-12 13:42 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
proteus.zip
(188.01 KB, 下載次數: 356)
2019-5-12 13:42 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
aaronxx
時間:
2019-5-26 15:00
學習
作者:
LuminousRascal
時間:
2020-6-16 13:09
有沒有HEX文件啊
作者:
gemini12
時間:
2020-6-16 21:06
謝謝樓主,雪中送碳啊,樓主天使
作者:
heiyues
時間:
2020-6-16 21:07
感謝樓主大恩大德!
作者:
15130498112
時間:
2020-6-16 22:00
Proteus下下來打不開
作者:
lhf58
時間:
2020-6-18 15:52
謝謝樓主,雪中送碳啊,樓主天使
作者:
cookidog
時間:
2020-10-15 20:26
這個dma只是個變量?
作者:
cookidog
時間:
2020-10-15 20:31
這個好像沒有dma啊
作者:
trenlyn
時間:
2020-10-16 09:51
這個不錯的,可惜Proteus不支持STM8S仿真。
作者:
zou1904
時間:
2021-6-16 15:41
為啥我開adc就卡死
作者:
jyoi
時間:
2021-9-5 11:18
實測有效,但是ad采樣精度有點問題
作者:
a53135324
時間:
2021-9-14 09:37
感謝樓主分享,正需要一個ADC采集的
作者:
Hjc12345678
時間:
2022-2-18 00:00
本帖最后由 Hjc12345678 于 2022-2-18 00:14 編輯
沒有用到DMA,程序問題較多,如xiangshi()沒用到,p,q取用也有問題,不用DMA的話仿真數碼管顯示會閃爍,原因是轉換需要時間太長導致。
作者:
easyming
時間:
2022-7-1 17:43
到底有用木有用,有仿真驗證過的嗎?
作者:
2932735693
時間:
2024-2-12 21:21
我用了移植的時候一切正常,但是我發現ADC只在開機時測量一次
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
亚洲激情在线观看
|
欧美日韩视频一区二区
|
一级二级三级黄色
|
午夜精品福利视频
|
日本国产高清
|
国产成人精品免费视频
|
99re在线
|
久在线
|
国产一区二区三区
|
成年免费大片黄在线观看一级
|
欧美日韩视频在线
|
97精品超碰一区二区三区
|
亚洲国产福利视频
|
国产婷婷色一区二区三区
|
精品91久久久
|
国产精品小视频在线观看
|
精品国产一区久久
|
欧美精品一二三区
|
先锋资源网站
|
国产一区 在线视频
|
日韩福利在线观看
|
色av一区二区
|
精品无码久久久久国产
|
精品日韩一区
|
婷婷色国产偷v国产偷v小说
|
欧美一级在线
|
亚洲人成人一区二区在线观看
|
91视视频在线观看入口直接观看
|
日韩欧美中文字幕在线观看
|
久久久噜噜噜久久中文字幕色伊伊
|
久久精品视频一区二区
|
色眯眯视频在线观看
|
成人精品
|
美女爽到呻吟久久久久
|
国产一区二区三区www
|
日韩中出
|
激情六月丁香婷婷
|
精品国产第一区二区三区
|
伊人狠狠
|
欧美色性
|
狠狠色综合网站久久久久久久
|