STM32F429基础案例代码

跑马灯实验

1.寄存器版本

#include "sys.h"
#include "delay.h"
#include "usart.h"




int main(void)
{
	HAL_Init();
	Stm32_Clock_Init(360,25,2,8);
	delay_init(180);
	
	RCC->AHB1ENR |= 1<<1; //相当于RCC->AHB1ENR = 0x02,这样做不会使其其他位失效
	
	GPIOB->MODER=0X00000005;
	GPIOB->OTYPER=0x00000000;
	GPIOB->OSPEEDR=0x0000000F;
	GPIOB->PUPDR=0x00000005;
	
	while(1)
	{
		
	GPIOB->BSRR=0x00000003;//两个IO口同时输出高电平1
		
	delay_ms(500);
		
	GPIOB->BSRR=0x00030000;//两个IO口同时输出低电平0
		
	delay_ms(500);
		
	}
}

2.HAL库版本

#include "sys.h"
#include "delay.h"
#include "usart.h"




int main(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	HAL_Init();                   //初始化HAL库
	Stm32_Clock_Init(360,25,2,8); //设置时钟,180MHz
	delay_init(180);
	__HAL_RCC_GPIOB_CLK_ENABLE();//使能PB时钟
	
	GPIO_InitStructure.Mode=GPIO_MODE_OUTPUT_PP;//推挽输出
	GPIO_InitStructure.Pin=GPIO_PIN_0|GPIO_PIN_1;
	GPIO_InitStructure.Pull=GPIO_PULLUP;//上拉
	GPIO_InitStructure.Speed=GPIO_SPEED_FREQ_VERY_HIGH;//高速
	
	HAL_GPIO_Init(GPIOB,&GPIO_InitStructure);
	
	while(1)
	{
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);//PB0=0
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);//PB1=0
	delay_ms(500);
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);//PB0=1
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET);//pb1=1
	delay_ms(500);
	}
}

串口发送实验

1.HAL库版本

#include "sys.h"
#include "delay.h"
#include "usart.h"

UART_HandleTypeDef usart1_handler;

void uart1_init()
{
  usart1_handler.Instance=USART1;
	usart1_handler.Init.BaudRate=115200;
	usart1_handler.Init.WordLength=UART_WORDLENGTH_8B;
	usart1_handler.Init.StopBits=UART_STOPBITS_1;
	usart1_handler.Init.HwFlowCtl=UART_HWCONTROL_NONE;
	usart1_handler.Init.Mode=UART_MODE_TX_RX;
	usart1_handler.Init.Parity=USART_PARITY_NONE;
	
  HAL_UART_Init(&usart1_handler);


}

void HAL_UART_MspInit(UART_HandleTypeDef *huart)
{
	
	GPIO_InitTypeDef GPIO_Initure;
	
	if(huart->Instance==USART1)
	{
		__HAL_RCC_GPIOA_CLK_ENABLE();			//使能GPIOA时钟
		__HAL_RCC_USART1_CLK_ENABLE();			//使能USART1时钟
		
		GPIO_Initure.Pin=GPIO_PIN_9;			//PA9
		GPIO_Initure.Mode=GPIO_MODE_AF_PP;		//复用推挽输出
		GPIO_Initure.Pull=GPIO_PULLUP;			//上拉
		GPIO_Initure.Speed=GPIO_SPEED_HIGH;		//高速
		GPIO_Initure.Alternate=GPIO_AF7_USART1;	//复用为USART1
		HAL_GPIO_Init(GPIOA,&GPIO_Initure);	   	//初始化PA9

		GPIO_Initure.Pin=GPIO_PIN_10;			//PA10
		HAL_GPIO_Init(GPIOA,&GPIO_Initure);	   	//初始化PA10
		
	}
}
int main(void)
{
	
	u8 buff[]="test";
	
	HAL_Init();                   //初始化HAL库
	Stm32_Clock_Init(360,25,2,8); //设置时钟,180MHz
	delay_init(180);
	uart1_init();
	
	while(1)
	{
		
		HAL_UART_Transmit(&usart1_handler,buff,sizeof(buff),1000);
		delay_ms(300);
	}
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值