Proteus仿真STM32的实战步骤
工程实践老师喊我们进行一个proteus仿真做STM32的测试,proteus之前笔者有用过,都用来做51的仿真,32的仿真确实没有尝试过,于是今天把我实战32仿真的整个操作流程做一个记录。1、首先按照AD那边的原理图搭建好基本电路,包括晶振振荡电路等外围。2、正当准备运行上电的时候,提示没VSS和VDD未连接3、通过查阅资料可知选择 Design -> Configure Power Ra
工程实践老师喊我们进行一个proteus仿真做STM32的测试,proteus之前笔者有用过,都用来做51的仿真,32的仿真确实没有尝试过,于是今天把我实战32仿真的整个操作流程做一个记录。
1、首先按照AD那边的原理图搭建好基本电路,包括晶振振荡电路等外围。
2、正当准备运行上电的时候,提示没VSS和VDD未连接
3、通过查阅资料可知
选择 Design -> Configure Power Rails …添加到VCC/VDD里头既可解决
设计->配置供电网
4、打算接入一个LED灯,程序设置PB1拉低,但是发现PB1始终为灰色的
5、查询资料得知需要在芯片内部设置8M的晶振频率
6、这个时候再上电就会发现PB1的引脚被MCU拉低了
7、成功点亮LED
8、proteus大bug 运行着运行着 按键卡了
9、把右边的晶振振荡电路删除后发现按键不再卡死了
10、写了8位流水灯 效果还算可以但是偶尔还是会出现VSM调试器弹出的问题
11、如图,不知如何解决,存疑
12、代码部分
#include "stm32f10x.h"
#include "bsp_led.h"
#include "bsp_key.h"
unsigned char Trg;
unsigned char Cont;
void KeyRead( void )
{
unsigned char ReadData = (GPIO_ReadInputData(GPIOA))^0xff; // 1
Trg = ReadData & (ReadData ^ Cont); // 2
Cont = ReadData; // 3
}
void delay_ms(uint32_t ms)
{
uint32_t i_cnt,j_cnt;
for(i_cnt=0;i_cnt<3000;i_cnt++);
for(j_cnt=0;j_cnt<ms;j_cnt++);
}
/**
* @brief 主函数
* @param 无
* @retval 无
*/
int main(void)
{
int i;
/* LED端口初始化 */
LED_GPIO_Config();
LED1_ON;
LED3_OFF;
/* 按键端口初始化 */
Key_GPIO_Config();
/* 轮询按键状态,若按键按下则反转LED */
while(1)
{
// GPIO_SetBits(GPIOB, GPIO_Pin_All);
// delay(5000);
// GPIO_ResetBits(GPIOB, GPIO_Pin_All);
// delay(5000);
for(i=0;i<8;i++)
{
delay_ms(99000);
GPIOB->BRR=(1<<i);
delay_ms(99000);
GPIOB->BSRR=(1<<i);
}
for(i=0;i<8;i++)
{
delay_ms(99000);
GPIOB->BRR=0x000000ff;
delay_ms(99000);
GPIOB->BSRR=0x000000ff;
}
// if( Key_Scan(KEY1_GPIO_PORT,KEY1_GPIO_PIN) == KEY_ON )
// {
// /*LED1反转*/
// //LED3_TOGGLE;
// LED3_ON;
// }
}
}
/*********************************************END OF FILE**********************/
本打算加工按键改变LED灯的状态的,但是按键没效果,怀疑是仿真问题,存疑!
总结:proteus在51的仿真还算可以,但是在32的仿真感觉很多都不适配,32的仿真方面在网络上的资料也普遍反应bug众多,如32的定时器在仿真上边的使用堪称最难的仿真
全球首发,全网最难,全世界第一个Proteus仿真stm32f103之实现定时器TIM3中断
我的第一个个人技术博客2020.11.22开始入坑写CSDN博客
由于还不会MarkDown技能
所以博客的阅读效果稍显干燥
Alex
2020.11.22
更多推荐
所有评论(0)