当前位置: 首页 > news >正文

寒假学习(11)(HAL库2+模数电11)

这两天尝试了一下直接对寄存器操作控制单片机,在感觉对他的底层工作又有了更深的了解

下面是一些代码对比

#include "BUZZ.h" //void BEEP_ON(void) //{ // GPIOG->ODR |= GPIO_ODR_ODR12; //} // //void BEEP_OFF(void ) //{ // GPIOG->ODR &= ~GPIO_ODR_ODR12; //} //void BEEP_tog(void) //{ // // if((GPIOG->IDR&GPIO_IDR_IDR12) != 0) // { // GPIOG->ODR &= ~GPIO_ODR_ODR12; // // } // else // { // // GPIOG->ODR |= GPIO_ODR_ODR12; // } // //} void BEEP_ON(void) { HAL_GPIO_WritePin(GPIOG,GPIO_PIN_12,GPIO_PIN_SET); } void BEEP_OFF(void ) { HAL_GPIO_WritePin(GPIOG,GPIO_PIN_12,GPIO_PIN_RESET); } void BEEP_tog(void) { HAL_GPIO_TogglePin(GPIOG,GPIO_PIN_12); }
#include "led.h" //void led_init(void) //{ // // //配置RCC // RCC->APB2ENR |= RCC_APB2ENR_IOPGEN; // //配置GPIO // GPIOG->CRH |= GPIO_CRH_MODE14; // GPIOG->CRH &= ~(GPIO_CRH_CNF14); // GPIOG->CRH |= GPIO_CRH_MODE15; // GPIOG->CRH &= ~(GPIO_CRH_CNF15); // // //} //void led_on(int led_num) //{ // if(14 == led_num) // { // GPIOG->ODR |= GPIO_ODR_ODR14; // } // // else if(15 == led_num) // { // GPIOG->ODR |= GPIO_ODR_ODR15; // } //} //void led_off(int led_num) //{ // if(14 == led_num) // { // GPIOG->ODR &= ~GPIO_ODR_ODR14; // } // // else if(15 == led_num) // { // GPIOG->ODR &= ~GPIO_ODR_ODR15; // } //} //void led_togle(int num) //{ // if(14 == num) // { // if((GPIOG->IDR&GPIO_IDR_IDR14) != 0) // { // //GPIOG->ODR &= ~GPIO_ODR_ODR14; // led_off(14); // } // else // { // led_on(14); // //GPIOG->ODR |= GPIO_ODR_ODR14; // } // } // // if(15 == num) // { // if((GPIOG->IDR&GPIO_IDR_IDR15) != 0) // { // led_off(15); // //GPIOG->ODR &= ~GPIO_ODR_ODR15; // } // else // { // led_on(15); // //GPIOG->ODR |= GPIO_ODR_ODR15; // } // } //} void led_on(int led_num) { if(14 == led_num) { HAL_GPIO_WritePin(GPIOG,GPIO_PIN_14,GPIO_PIN_SET); } else if(15 == led_num) { HAL_GPIO_WritePin(GPIOG,GPIO_PIN_15,GPIO_PIN_SET); } } void led_off(int led_num) { if(14 == led_num) { HAL_GPIO_WritePin(GPIOG,GPIO_PIN_14,GPIO_PIN_RESET); } else if(15 == led_num) { HAL_GPIO_WritePin(GPIOG,GPIO_PIN_15,GPIO_PIN_RESET); } } void led_togle(int num) { if(14 == num) { HAL_GPIO_TogglePin(GPIOG,GPIO_PIN_14); } if(15 == num) { HAL_GPIO_TogglePin(GPIOG,GPIO_PIN_15); } }
#include "key.h" //void key_int(void) //{ // //打开时钟 // RCC->APB2ENR |= RCC_APB2ENR_IOPGEN; // // //配置工作模式 mode : 00 cnf: 01 // // GPIOG->CRL &= ~GPIO_CRL_MODE3; // GPIOG->CRL &= ~GPIO_CRL_CNF3_1; // GPIOG->CRL |= GPIO_CRL_CNF3_0; // // GPIOG->CRL &= ~GPIO_CRL_MODE4; // GPIOG->CRL &= ~GPIO_CRL_CNF4_1; // GPIOG->CRL |= GPIO_CRL_CNF4_0; // // GPIOG->CRL &= ~GPIO_CRL_MODE5; // GPIOG->CRL &= ~GPIO_CRL_CNF5_1; // GPIOG->CRL |= GPIO_CRL_CNF5_0; // // // //全部改为上拉输入 // // GPIOG->ODR |= GPIO_ODR_ODR3; // GPIOG->ODR |= GPIO_ODR_ODR4; // GPIOG->ODR |= GPIO_ODR_ODR5; // //} //unsigned int key_scan(void) //{ // unsigned int num = 0; // // if((GPIOG->IDR&GPIO_IDR_IDR3) == 0) // { // Delay_ms(10); // if((GPIOG->IDR&GPIO_IDR_IDR3) == 0) // { // while((GPIOG->IDR&GPIO_IDR_IDR3) == 0); // num = 1; // } // } // // else if((GPIOG->IDR&GPIO_IDR_IDR4) == 0) // { // Delay_ms(10); // if((GPIOG->IDR&GPIO_IDR_IDR4) == 0) // { // while((GPIOG->IDR&GPIO_IDR_IDR4) == 0); // num = 2; // } // } // // if((GPIOG->IDR&GPIO_IDR_IDR5) == 0) // { // Delay_ms(10); // if((GPIOG->IDR&GPIO_IDR_IDR5) == 0) // { // while((GPIOG->IDR&GPIO_IDR_IDR5) == 0); // num = 3; // } // } // // return num; //} unsigned int key_scan(void) { unsigned int num = 0; if(HAL_GPIO_ReadPin(GPIOG,GPIO_PIN_3) == GPIO_PIN_RESET) { HAL_Delay(10); if(HAL_GPIO_ReadPin(GPIOG,GPIO_PIN_3) == GPIO_PIN_RESET) { while(HAL_GPIO_ReadPin(GPIOG,GPIO_PIN_3) == GPIO_PIN_RESET); num = 1; } } else if(HAL_GPIO_ReadPin(GPIOG,GPIO_PIN_4) == GPIO_PIN_RESET) { HAL_Delay(10); if(HAL_GPIO_ReadPin(GPIOG,GPIO_PIN_4) == GPIO_PIN_RESET) { while(HAL_GPIO_ReadPin(GPIOG,GPIO_PIN_4) == GPIO_PIN_RESET); num = 2; } } if(HAL_GPIO_ReadPin(GPIOG,GPIO_PIN_5) == GPIO_PIN_RESET) { HAL_Delay(10); if(HAL_GPIO_ReadPin(GPIOG,GPIO_PIN_5) == GPIO_PIN_RESET) { while(HAL_GPIO_ReadPin(GPIOG,GPIO_PIN_5) == GPIO_PIN_RESET); num = 3; } } return num; }
http://www.jsqmd.com/news/331599/

相关文章:

  • 【毕业设计】SpringBoot+Vue+MySQL 失物招领平台平台源码+数据库+论文+部署文档
  • 前后端分离科研项目验收管理系统系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程
  • 简易嵌入式错误码模块设计!
  • 静态方法和类方法
  • websocket协议和http协议有何依赖关系?
  • 一个典型故事:没有 EDM4U vs 用了 EDM4U 的差别(Unity 接 SDK 的大实话版)
  • Java Web 失物招领平台系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】
  • 【毕业设计】SpringBoot+Vue+MySQL 和智慧生活商城系统平台源码+数据库+论文+部署文档
  • 企业级光影管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】
  • 【毕业设计】SpringBoot+Vue+MySQL 华府便利店信息管理系统平台源码+数据库+论文+部署文档
  • 提示工程架构师的实战指南:优化提示内容的7个方法
  • AI原生应用领域事实核查:自动驾驶数据的可靠性确认
  • 基于SpringBoot+Vue的Spring boot名城小区物业管理系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】
  • SpringBoot+Vue +电商应用系统管理平台源码【适合毕设/课设/学习】Java+MySQL
  • SpringBoot+Vue 毕业设计成绩管理系统平台完整项目源码+SQL脚本+接口文档【Java Web毕设】
  • 基于SpringBoot+Vue的+电商应用系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】
  • 基于SpringBoot+Vue的光影管理系统设计与实现【Java+MySQL+MyBatis完整源码】
  • SpringBoot+Vue 华府便利店信息管理系统管理平台源码【适合毕设/课设/学习】Java+MySQL
  • Spring Security 6 快速实战:从入门到整合JWT实现认证授权
  • 专业工业制冷服务商选择指南
  • Java线程池:面试中你必须掌握的核心知识点!
  • 成功解决 RuntimeError: CUDA error: invalid device function 报错
  • 成功解决 ModuleNotFoundError: No module named ‘modelscope.utils.constant‘ 报错
  • 3js(3)(动态修改)(TODO)
  • SDK 接入之 External Dependency Manager(EDM4U)有多强?——Unity 依赖管理的“中央厨房”(大白话生动有趣版)
  • 深入探讨VS Code的CMake Tools扩展
  • Flask与Flutter:无缝上传与显示文件
  • 企业级科研项目验收管理系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】
  • DynamoDB中的PartiQL查询优化技巧
  • 大数据领域中 Power BI 的优势及应用场景