A7核 功能函数实现:
#include"gpio.h"
//初始化函数
void hal_gpio_init(gpio_t* gpiox,gpio_init_t* init,unsigned int pin)
{
RCC_AHB4_ENSETR |=(0x1 << 4);
gpiox->MODER &= (~(03 << (pin * 2)));
gpiox->MODER |=(init->moder << (pin*2));
gpiox->OTYPER &=(~(0x1 << pin));
gpiox->OTYPER |=(init->otyper << pin );
gpiox->OSPEEDR &= (~(03 << (pin * 2)));
gpiox->OSPEEDR |=(init->speeder << (pin*2));
gpiox->PUPDR &= (~(03 << (pin * 2)));
gpiox->PUPDR |=(init->pupdr << (pin*2));
}
//写函数
void hal_gpio_write(gpio_t* gpiox,unsigned int pin,gpio_status_t state)
{
if(state == GPIO_RESET)
{
gpiox->ODR &=(~(0x1 << pin));
}
else
{
gpiox->ODR |=(0x1 << pin);
}
}
主函数:
#include "gpio.h"
extern void printf(const char *fmt, ...);
void delay_ms(int ms)
{
int i,j;
for(i = 0; i < ms;i++)
for (j = 0; j < 1800; j++);
}
void LED_init()
{
RCC_AHB4_ENSETR |= (0x3 << 4);
gpio_init_t init= {OUTPUT,PP,LOW,NO_PUPD};
hal_gpio_init(GPIOE,&init,GPIO_PIN_10);
hal_gpio_init(GPIOF,&init,GPIO_PIN_10);
hal_gpio_init(GPIOE,&init,GPIO_PIN_8);
}
int main()
{
LED_init();
while(1)
{
hal_gpio_write(GPIOE,GPIO_PIN_10,GPIO_SET);
delay_ms(500);
hal_gpio_write(GPIOE,GPIO_PIN_10,GPIO_RESET);
delay_ms(500);
hal_gpio_write(GPIOF,GPIO_PIN_10,GPIO_SET);
delay_ms(500);
hal_gpio_write(GPIOF,GPIO_PIN_10,GPIO_RESET);
delay_ms(500);
hal_gpio_write(GPIOE,GPIO_PIN_8,GPIO_SET);
delay_ms(500);
hal_gpio_write(GPIOE,GPIO_PIN_8,GPIO_RESET);
delay_ms(500);
}
return 0;
}
M4核 stm32CUBE编写:
main.c
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_10,GPIO_PIN_SET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_10,GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOF,GPIO_PIN_10,GPIO_PIN_SET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOF,GPIO_PIN_10,GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_8,GPIO_PIN_SET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_8,GPIO_PIN_RESET);
HAL_Delay(500);
}
/* USER CODE END 3 */
}