正点原子 在ADC实验中添加USMART,通过串口查看电压值
结合了实验十七和实验十四。由于没有买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,通过串口查看电压值相关推荐
- 【正点原子FPGA连载】第十四章 串口通信实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1
1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...
- 【正点原子FPGA连载】 第十七章 RS485串口通信实验 -摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0
1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...
- STM32正点原子图片——显示实验
目录 一.图片显示部分 GIF piclib.c介绍 图像显示实验main.c介绍 二.SD卡模块 1.SD卡基础知识 2.SD卡读操作 3.SD卡写操作 一.图片显示部分 GIF GIF(Graph ...
- C++ 实验四 NO. 3 书店的前台收银销售类, 请完成该类定义,实验并且要满足: 1)向购物车中添加书籍;2):查看购物车;3):结算
//************************************************************************************************** ...
- 正点原子STM32F103触摸按键实验指导手册有误
今天在做触摸按键实验的时候,按照整点原子手册的代码进行实验,但是结果一直不对,最后用一点一点排除的方法花了好几个小时,发现是手册有误,真是哭了. 错误在 TPAD_Get_Val函数中,手册上是这样的 ...
- 正点原子OLED显示实验
目录 简介 原理 接口方式 1.8080并行接口 2.SPI方式 常用命令 编写代码 IO口 软件设计 OLED初始化代码: OLED_Refresh_Gram函数 OLED_WR_Byte函数 画点 ...
- 正点原子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 ...
- 正点原子IMX6UL ADC采集
1 前言 项目需要用到IMX6UL ADC功能, 12位ADC 2 修改设备树 因为用到通道2和通道5, 所以一共有0-5个, 一共是6个通道 imx6ull.dtsi adc1: adc@02198 ...
- mysql中添加外键属性_Python将值插入外键属性(MYSQL)
我在MySQL数据库中创建了两个表 员工表:+----+-----------+------------- | ID | NAME | +----+-----------+------------- ...
最新文章
- golang操作redis
- Django框架详细介绍---cookie、session、自定义分页
- __eq___C ++'and_eq'关键字和示例
- 计算机对环境的影响的案例,计算机环境下的呈现方式对学生样例学习的影响
- jude的一些基本用法
- 测试低频噪音软件,设计制作并验证0.1Hz10Hz超低频微弱噪音检测放大器要点
- C#中使用MongoDb
- 老妈~老妈~我爱你~~~~~~~阿弥陀佛保佑你~~~~~~~
- linux修复u盘的软件下载,修复U盘合集工具
- everything软件使用技巧
- 未能连接到imap服务器,roundcube无法连接imap服务器登录
- Float浮动与清除浮动
- Mac OS配置python虚拟环境
- android H264(3): 流媒体播放器设计方案
- Linux中编写Shell脚本
- Linux -- 项目服务部署学习
- 微信商家收款码怎么申请,3分钟快速开通低费率商户方法
- 产品经理和项目经理谁才是项目管理界的NO.1?
- spring boot实战
- 网络教育专科计算机考试试题电子科大,电子科技大学网络教育专科英语(理)入学考试模拟题及答案...