版权声明:博主的博客不值钱随便转载但要注明出处 https://blog.csdn.net/easylovecsdn/article/details/81812944
这次实验犯了个笑话,竟然在宏定义后面加分号...就像这样(#define XXX;)大家千万不要学我,结果报错expected expression,还苦恼半天,想为啥操作不了寄存器了?我真愚蠢!
刚开始我也不会写这些东西,其实摸清套路就好,RCC时钟使能、GPIO初始化、相关寄存器初始化、延时函数/串口等初始化、循环执行相关操作,该用库函数的用库函数,该用寄存器的用寄存器,废话少说,上代码,这里依然只给出beep部分和main部分;
1.beep.h
#ifndef __BEEP_H
#define __BEEP_H
#include "sys.h"
#define BEEP PFout(8)
void beep_init(void);
#endif
2.beep.c
#include "beep.h"
void beep_init()
{
RCC->AHB1ENR |= 1<<5;
GPIO_Set(GPIOF, PIN8, GPIO_MODE_OUT, GPIO_OTYPE_PP, GPIO_SPEED_100M, GPIO_PUPD_PU);
BEEP = 1;
}
3.main.c
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include "beep.h"
int main(void)
{
Stm32_Clock_Init(336,8,2,7);//设置时钟,168Mhz
delay_init(168); //初始化延时函数
uart_init(84,115200); //串口初始化为115200
led_init();
beep_init();
while(1)
{
LED0 = 0;
BEEP = 1;
LED1 = 1;
delay_ms(500);
LED0 = 1;
BEEP = 0;
LED1 = 0;
delay_ms(500);
}
}