前言
stm的学习笔记
在主函数的“ while(1)”循环中,使用蜂鸣器 BEEP1(PA1)输出“滴滴 ”声音,使用扩展板的 KEY0(PA8)按键作为外部中断输入源,采用中断方式,按下 KEY0按键之后,产生中断,蜂鸣器声音暂停,扩展板上LED0(接PB0)闪烁 5次,中断响应结束后,蜂鸣器恢复输出“滴滴 ”声音。
一、使用软件
STM32CubeMX,keil5
二、使用步骤
1.外设配置
主要用了三个引脚,PB0控制LED闪烁,PA8按键,PA1蜂鸣器



引脚的配置

时钟的配置

2.代码
主函数代码如下(示例):
int FlagS = 0;
int count =0;
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);
if(FlagS ==1){
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);
while(count<5)
{
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);
HAL_Delay(1000);
count++;
}
if(count==5)count=0;
//HAL_Delay(5000);
FlagS = 0;
}
}
/* USER CODE END 3 */
}
外部中断回调函数代码
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == KEY0_Pin)
{
FlagS = 1;
}
}


被折叠的 条评论
为什么被折叠?



