本帖最后由 1030402679 于 2017-3-5 10:48 编辑
压缩包包含plot.exe+ STM32F1_ADC通道1串口程序.hex 。
2017年3月4日更改内容:接收数据过程中关闭串口不再闪退,不再需要设置间隔时间项内部实现数据小于设定数据长度则返回并记录数据与下次接收数据累加,也就是接收的数据会不断累加知道满足设置的条件。
基本功能:最高记录1072*30点波形数据并提供放大平移功能,只接受十六进制数据。
默认数据格式: 同步字+数据,提供任意字节过滤功能也就是从现有规约中提取想要显示的数据的功能,
这是第四次上传了算是个重大改进吧,对于这种简单的软件作品不在于技术高低,一定程度上在于是否适合,软件使用方法及源码直接封装在软件中了右键查看吧!
说一句对 电子爱好者 论坛的个人体会吧,从个人的角度来讲我觉得我电子 电路水平很菜,但是这个论坛里缺少高手好多好多我看到的人提的问题回答的问题已经不是用菜来形容了 而是兄弟你入行了么?
STM32F1程序:使用ADC1通道也就是GPIOA1引脚每隔10ms转换一次数据转换10组数据后通过串口1发送至上位机
测试程序如下:
- void adc_init()
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- ADC_InitTypeDef ADC_InitStructure;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_ADC1,ENABLE);
- RCC_ADCCLKConfig(RCC_PCLK2_Div6);
- GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;//ADC
- GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;
- GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
- GPIO_Init(GPIOA,&GPIO_InitStructure);
- 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_239Cycles5);
-
- ADC_Cmd(ADC1,ENABLE);
- ADC_ResetCalibration(ADC1);
- while(ADC_GetResetCalibrationStatus(ADC1));
-
- ADC_StartCalibration(ADC1);
- while(ADC_GetCalibrationStatus(ADC1));
- ADC_SoftwareStartConvCmd(ADC1, ENABLE);
- }
复制代码
- void usart_init()
- {
- GPIO_InitTypeDef GPIO_InitStructure; //声明一个结构体变量,用来初始化GPIO
- USART_InitTypeDef USART_InitStructure; //串口结构体定义
- NVIC_InitTypeDef NVIC_InitStructure;//中断结构体定义
-
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //打开时钟
-
- /* 配置GPIO的模式和IO口 */
- GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//TX //串口输出PA9
- GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; //复用推挽输出
- GPIO_Init(GPIOA,&GPIO_InitStructure); /* 初始化串口输入IO */
- GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;//RX //串口输入PA10
- GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; //模拟输入
- GPIO_Init(GPIOA,&GPIO_InitStructure); /* 初始化GPIO */
- USART_InitStructure.USART_BaudRate=9600; //波特率设置为9600 //波特率
- USART_InitStructure.USART_WordLength=USART_WordLength_8b; //数据长8位
- USART_InitStructure.USART_StopBits=USART_StopBits_1; //1位停止位
- USART_InitStructure.USART_Parity=USART_Parity_No; //无效验
- USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None; //失能硬件流
- USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx; //开启发送和接受模式
- USART_Init(USART1,&USART_InitStructure); /* 初始化USART1 */
- USART_Cmd(USART1, ENABLE); /* 使能USART1 */
- USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//使能或者失能指定的USART中断 接收中断
- USART_ClearFlag(USART1,USART_FLAG_TC);//清除USARTx的待处理标志位
- /* 设置NVIC参数 */
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
- NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; //打开USART1的全局中断
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占优先级为0
- NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //响应优先级为0
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能
- NVIC_Init(&NVIC_InitStructure);
- }
复制代码
- void UART_PutChar(USART_TypeDef* USARTx, uint8_t Data)
- {
- USART_SendData(USARTx, Data);
- while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET){}
- }
- int main()
- {
- u8 i;
- u16 ADC_Data=0, ADC_DA[20],ADC_DL[20],ADC_DH[20];
- adc_init(); //ADC初始化
- printf_init(); //printf初始化
- while(1)
- {
- ADC_Data=0;
- for(i=0;i<10;i++)
- {
- ADC_SoftwareStartConvCmd(ADC1, ENABLE);
- while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));
- ADC_DA[i]=ADC_GetConversionValue(ADC1);
- ADC_DL[i]=(u8)(0x00ff&ADC_DA[i]);
- ADC_DH[i]=(u8)((ADC_DA[i]>>8)&0x00ff);
- delay_ms(10);
- }
- UART_PutChar(USART1,0xEB);
- UART_PutChar(USART1,0x90);
- for(i=0;i<10;i++)
- {
- UART_PutChar(USART1,ADC_DH[i]);
- UART_PutChar(USART1,ADC_DL[i]);
- }
- }
- }
复制代码
0
|
|
|
|
谢谢楼主分享
|
|
|
|
|
都是些没什么技术含量的玩物自己做来玩的
|
|
|
|
|