stm32-软件仿真查看输出波形图

代码

#include "stm32f10x.h"

typedef unsigned          char u8;
typedef unsigned short     int u16;
void delay_ms(u16 ms)
{
	u16 j;
	while(ms--)
	{
		for(j=0;j<1000;j++);
	}
}

#define GPIOA_ODR (GPIOA_BASE+0x0C)
#define GPIOA_IDR (GPIOA_BASE+0x08)
#define GPIOB_ODR (GPIOB_BASE+0x0C)
#define GPIOB_IDR (GPIOB_BASE+0x08)
#define GPIOC_ODR (GPIOC_BASE+0x0C)
#define GPIOC_IDR (GPIOC_BASE+0x08)
#define GPIOD_ODR (GPIOD_BASE+0x0C)
#define GPIOD_IDR (GPIOD_BASE+0x08)
#define GPIOE_ODR (GPIOE_BASE+0x0C)
#define GPIOE_IDR (GPIOE_BASE+0x08)

#define BitBand(Addr,bitNum) *((volatile unsigned long *)((Addr&0xf0000000)+0x2000000+((Addr&0xfffff)<<5)+(bitNum<<2)))
	
#define PAout(n) BitBand(GPIOA_ODR,n)
#define PAin(n)  BitBand(GPIOA_IDR,n)
#define PBout(n) BitBand(GPIOB_ODR,n)
#define PBin(n)  BitBand(GPIOB_IDR,n)
#define PCout(n) BitBand(GPIOC_ODR,n)
#define PCin(n)  BitBand(GPIOC_IDR,n)

void send_data(u8 data)
{
	u16 i;
	PAout(1) = 0;
	for(i=0;i<8;i++)
	{
		
		PAout(1) = 0;
		if((data & 0x01) == 0x01)
			PAout(0) = 1;
		else 
			PAout(0) = 0;
		delay_ms(1);
		
		PAout(1) = 1;
		delay_ms(1);
		data = data>>1;
	}
}

int main(void)
{
	//PA.0链接AB,PA.1连接CLOCK,PB.0连接clear
	//使得164的QA~QH输出11000100
	
	//1、设置引脚工作模式,PA.0,PA.1,PB.0作为推挽输出
	//2、164通信,PA.0 = 0,PA.1上升沿
	
	GPIOA->CRL = 0x33;
	GPIOB->CRL = 0x03;
	
	send_data(0xC4);
	
	return 0;
}

打开逻辑分析仪。

编译代码,进入调试打开逻辑分析仪。
stm32-软件仿真查看输出波形图_第1张图片

设置分析参数。

stm32-软件仿真查看输出波形图_第2张图片
PORTA.0
PORTA.1
stm32-软件仿真查看输出波形图_第3张图片
DisplayType 改为bit
stm32-软件仿真查看输出波形图_第4张图片
全速运行查看结果。(点击Zoom Out可以缩小视图)
stm32-软件仿真查看输出波形图_第5张图片

你可能感兴趣的:(stm32,stm32)