结合了实验十七和实验十四。由于没有买LCD的板子,所以通过串口调试来查看电压值。

目录

一、准备工作:头文件

二、添加一些代码

三、开始调试


一、准备工作:头文件

1、首先将实验十四的USMART文件夹复制到实验十七中。

2、在keil uvision中将USMART文件包含进来

3、将usmart的头文件路径添加进来

此时运行是会报错的,类似于下面这种

经过和USMART文件对比,并搜索TIM_Cmd函数可以很快发现,是stmf10x_tim.c的库没有添加进来ADC工程导致的,添加进来就可以了。

二、添加一些代码

需要改动的代码:

main.c

#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"
#include "adc.h"
#include "usmart.h"/************************************************ALIENTEK 战舰STM32F103开发板实验17ADC 实验 技术支持:www.openedv.com淘宝店铺:http://eboard.taobao.com 关注微信公众平台微信号:"正点原子",免费获取STM32资料。广州市星翼电子科技有限公司  作者:正点原子 @ALIENTEK
************************************************/
//LED状态设置函数
void led_set(u8 sta)
{LED1=sta;
}
//函数参数调用测试函数
void test_fun(void(*ledset)(u8),u8 sta)
{ledset(sta);
}   void test_fun1(u16(*Get_Adc_Average)(u8,u8),u8 ch,u8 times)
{//printf("%u\r\n",Get_Adc_Average(ch,times));u16 adcx1;float temp1;adcx1=Get_Adc_Average(ch,times);temp1=(float)adcx1*(3.3/4096);printf("%u\r\n",adcx1);printf("%f\r\n",temp1);}void test_fun2(u16(*Get_Adc)(u8),u8 ch)
{u16 adcx2;float temp2;adcx2=Get_Adc(ch);temp2=(float)adcx2*(3.3/4096);printf("%u\r\n",adcx2);printf("%f\r\n",temp2);
}int main(void){     u16 adcx;float temp;delay_init();           //延时函数初始化    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级uart_init(115200);     //串口初始化为115200LED_Init();                //LED端口初始化LCD_Init();              Adc_Init();             //ADC初始化usmart_dev.init(SystemCoreClock/1000000);POINT_COLOR=RED;//设置字体为红色 LCD_ShowString(60,50,200,16,16,"WarShip STM32");  LCD_ShowString(60,70,200,16,16,"ADC TEST");   LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");LCD_ShowString(60,110,200,16,16,"2015/1/14");  //显示提示信息POINT_COLOR=BLUE;//设置字体为蓝色LCD_ShowString(60,130,200,16,16,"ADC_CH0_VAL:");         LCD_ShowString(60,150,200,16,16,"ADC_CH0_VOL:0.000V");         while(1){adcx=Get_Adc_Average(ADC_Channel_1,10);LCD_ShowxNum(156,130,adcx,4,16,0);//显示ADC的值temp=(float)adcx*(3.3/4096);adcx=temp;LCD_ShowxNum(156,150,adcx,1,16,0);//显示电压值temp-=adcx;temp*=1000;LCD_ShowxNum(172,150,temp,3,16,0X80);LED0=!LED0;delay_ms(250); }}

usamrt_config.c

#include "usmart.h"
#include "usmart_str.h" 用户配置区///
//这下面要包含所用到的函数所申明的头文件(用户自己添加)
#include "delay.h"
#include "sys.h"
#include "lcd.h"
#include "adc.h"extern void led_set(u8 sta);
extern void test_fun(void(*ledset)(u8),u8 sta);
extern void test_fun1(void(*Get_Adc_Average)(u8,u8),u8 ch,u8 times);
extern void test_fun2(void(*Get_Adc)(u8),u8 ch);
//函数名列表初始化(用户自己添加)
//用户直接在这里输入要执行的函数名及其查找串
struct _m_usmart_nametab usmart_nametab[]=
{
#if USMART_USE_WRFUNS==1  //如果使能了读写操作(void*)read_addr,"u32 read_addr(u32 addr)",(void*)write_addr,"void write_addr(u32 addr,u32 val)",
#endif(void*)delay_ms,"void delay_ms(u16 nms)",(void*)delay_us,"void delay_us(u32 nus)",    (void*)LCD_Clear,"void LCD_Clear(u16 Color)",(void*)LCD_Fill,"void LCD_Fill(u16 xsta,u16 ysta,u16 xend,u16 yend,u16 color)",(void*)LCD_DrawLine,"void LCD_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2)",(void*)LCD_DrawRectangle,"void LCD_DrawRectangle(u16 x1, u16 y1, u16 x2, u16 y2)",(void*)LCD_Draw_Circle,"void Draw_Circle(u16 x0,u16 y0,u8 r)",(void*)LCD_ShowNum,"void LCD_ShowNum(u16 x,u16 y,u32 num,u8 len,u8 size)",(void*)LCD_ShowString,"void LCD_ShowString(u16 x,u16 y,u16 width,u16 height,u8 size,u8 *p)",(void*)led_set,"void led_set(u8 sta)",(void*)test_fun,"void test_fun(void(*ledset)(u8),u8 sta)",            (void*)test_fun1,"void test_fun1(void(*Get_Adc_Average)(u8,u8),u8 ch,u8 times)",(void*)test_fun2,"void test_fun2(void(*Get_Adc)(u8),u8 ch)",(void*)LCD_ReadPoint,"u16 LCD_ReadPoint(u16 x,u16 y)",(void*)Get_Adc_Average,"u16 Get_Adc_Average(u8 ch,u8 times)",(void*)Get_Adc,"u16 Get_Adc(u8 ch) "
};
///END///
/
//函数控制管理器初始化
//得到各个受控函数的名字
//得到函数总数量
struct _m_usmart_dev usmart_dev=
{usmart_nametab,usmart_init,usmart_cmd_rec,usmart_exe,usmart_scan,sizeof(usmart_nametab)/sizeof(struct _m_usmart_nametab),//函数数量0,      //参数数量0,        //函数ID1,        //参数显示类型,0,10进制;1,16进制0,        //参数类型.bitx:,0,数字;1,字符串     0,      //每个参数的长度暂存表,需要MAX_PARM个0初始化0,      //函数的参数,需要PARM_LEN个0初始化
};   

三、开始调试

用一个杜邦线,一边接到PA1 ,另一边接GND或者3.3V ,可以看到测量还是非常准确的。

正点原子 在ADC实验中添加USMART,通过串口查看电压值相关推荐

  1. 【正点原子FPGA连载】第十四章 串口通信实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1

    1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...

  2. 【正点原子FPGA连载】 第十七章 RS485串口通信实验 -摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0

    1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...

  3. STM32正点原子图片——显示实验

    目录 一.图片显示部分 GIF piclib.c介绍 图像显示实验main.c介绍 二.SD卡模块 1.SD卡基础知识 2.SD卡读操作 3.SD卡写操作 一.图片显示部分 GIF GIF(Graph ...

  4. C++ 实验四 NO. 3 书店的前台收银销售类, 请完成该类定义,实验并且要满足: 1)向购物车中添加书籍;2):查看购物车;3):结算

    //************************************************************************************************** ...

  5. 正点原子STM32F103触摸按键实验指导手册有误

    今天在做触摸按键实验的时候,按照整点原子手册的代码进行实验,但是结果一直不对,最后用一点一点排除的方法花了好几个小时,发现是手册有误,真是哭了. 错误在 TPAD_Get_Val函数中,手册上是这样的 ...

  6. 正点原子OLED显示实验

    目录 简介 原理 接口方式 1.8080并行接口 2.SPI方式 常用命令 编写代码 IO口 软件设计 OLED初始化代码: OLED_Refresh_Gram函数 OLED_WR_Byte函数 画点 ...

  7. 正点原子linux串口驱动下载,【正点原子Linux连载】第二十一章UART串口通信实验-摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南 (amobbs.com 阿莫电子论坛)...

    示例代码21.3.1 bsp_uart.h文件代码 1  #ifndef _BSP_UART_H 2  #define _BSP_UART_H 3  #include "imx6ul.h&q ...

  8. 正点原子IMX6UL ADC采集

    1 前言 项目需要用到IMX6UL ADC功能, 12位ADC 2 修改设备树 因为用到通道2和通道5, 所以一共有0-5个, 一共是6个通道 imx6ull.dtsi adc1: adc@02198 ...

  9. mysql中添加外键属性_Python将值插入外键属性(MYSQL)

    我在MySQL数据库中创建了两个表 员工表:+----+-----------+------------- | ID | NAME | +----+-----------+------------- ...

最新文章

  1. JavaSE(二十)——面向对象的概念及三个基本特征
  2. glib 2.0 arm linux,为ARM编译Glib
  3. 子进程 post-installation script 返回了错误号 解决方法
  4. 百度超级链Xuper关于金额相关问题
  5. 转:一个较完整的关键字过滤解决方案
  6. 在平常网上原来是这样购票的(模拟购票)
  7. python之路--day10-闭包函数
  8. Python:hashlib加密,flask模块写接口
  9. 中琅领跑条码打印软件如何导入CDR文件
  10. 使用VC获取字符串的长度
  11. Modelsim SE的下载和安装
  12. Axure RP9Team版可用授权
  13. QDUOJ 93 - 分辣条(01背包)
  14. Allegro基本规则设置指导书之Electrical Total Etch Length
  15. 2个 windows 下的网络测试工具
  16. 图像的形状因子计算方法
  17. 汇顶科技(笔试加面试)
  18. 回路电感详细介绍(环路电感)
  19. 利用phpstudy在网页输出学号姓名
  20. setTimeout with a shorter delay

热门文章

  1. QT中为程序加入超级管理员权限
  2. 操作系统- IO多路复用
  3. K210 SD卡读取不到
  4. 软件测试的职业资格证书有哪些?
  5. textblock的LineHeight的调整
  6. P02014094汤雨瑶的信息论问答
  7. [gtalk]gtalk机器人
  8. linux 设置 tcp_keepalive_time,tcp参数详解之 tcp_keepalive_time
  9. Python列表的clear函数
  10. 央视春晚40年来首次采用国产8K摄像机摄制