Proteus是一款经典的单片机仿真软件,该软件功能强大,但是也有其限制,Proteus不提供WIFI模块等网络模块扩展网络功能,但是在实际使用中,我们真的无法在Proteus中实现网络功能吗?答案是否定的,Proteus有一个非常灵活的器件,那就是串口(COMPIM),结合虚拟串口,COMPIM可以和电脑通信,这时我们可以使用python写一个脚本,接受虚拟串口数据,然后使用我们计算机连接的网络发送到阿里云平台,此时我们的电脑充当了一个网关的作用,通过这种方式我们就实现了Proteus连接到阿里云平台。本次设计需要写三个代码,分别是Protues端、Python网关、Python UI。
一、实现步骤
1、Proteus端
首先我们需要在Proteus上创建一个简单的的仿真项目,只有两个部分分别是一个滑动变阻器,用于模拟传感器,一个COMPIM,并配置好虚拟串口。
然后我们测试一下,STM32读取ADC是否正确,使用串口调试助手,查看一下数据。如下图,当串口循环打印234(不换行),表示本次数据获取正确。
参考代码如下:
#include "stm32f10x.h"
#include "stdio.h"
#include "bsp_SysTick.h"
#include "system.h"
#include "usart.h"
#include "bsp_clkconfig.h"
#include "bsp_mcooutput.h"
#include "LCD1602.h"
#include "Light.h"
#include "stm32f10x_tim.h"
#include "Light.h"
#include "Key.h"
#include "Led.h"
#include "Timer.h"
#include "stm32f10x_it.h"
uint16_t val=0;
void delay_us(uint32_t xus)
{
SysTick->LOAD = 72 * xus; //璁剧疆瀹氭椂鍣ㄩ噸瑁呭€?
SysTick->VAL = 0x00; //娓呯┖褰撳墠璁℃暟鍊?
SysTick->CTRL = 0x00000005; //璁剧疆鏃堕挓婧愪负HCLK锛屽惎鍔ㄥ畾鏃跺櫒
while(!(SysTick->CTRL & 0x00010000)); //绛夊緟璁℃暟鍒?
SysTick->CTRL = 0x00000004; //鍏抽棴瀹氭椂鍣?
}
void delay_ms(uint32_t xms)
{
while(xms--)
{
delay_us(1000);
}
}
uint16_t cnt=0;
int main(vo