stm32学习3

ops/2024/10/30 4:15:07/

学习目录

  • 一.点亮LED(寄存器)
    • 1.使用宏定义

一.点亮LED(寄存器)

1.使用宏定义

在官方的文件中定义了很多的宏定义来表示stm32中每个引脚,这样可以简便开发;

改进后的代码:

#include "stm32f10x.h"int main(void)
{//1.时钟配置;为了让stm32的时钟与外设的时钟进行适配RCC->APB2ENR = 4;//2.GPIO工作模式配置;GPIOA->CRL = 0x03;//3.PA0输出低电平;GPIOA->ODR = 0xfffe;//4.使用一个死循环保存状态while(1){}
}

上面的方法可以增强可读性,但还是存在缺陷,即是对寄存器的整体进行了改变,没有精确的改变某个位,就如ODR中每个位都控制着不同的引脚,如果对整体赋值,就可能会对其他地方产生影响。因此为了解决该问题可以使用位运算;

置1用或正,置0用与反,其他位的数与置位相反

代码改进:

#include "stm32f10x.h"int main(void)
{//1.时钟配置;为了让stm32的时钟与外设的时钟进行适配RCC->APB2ENR |= 1 << 2;//2.GPIO工作模式配置;GPIOA->CRL &= ~(1 << 3);GPIOA->CRL &= ~(1 << 2);GPIOA->CRL |= 1 << 1;GPIOA->CRL |= 1;//3.PA0输出低电平;GPIOA->ODR &= ~(1);//4.使用一个死循环保存状态while(1){}
}

为了方便编写和阅读,stm32官方库中,为我们提供了每一位的宏定义;

代码最终的改写:

每一位的宏定义都是在指定的位置上为1,其他位为0

#include "stm32f10x.h"int main(void)
{//1.时钟配置;为了让stm32的时钟与外设的时钟进行适配RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;//2.GPIO工作模式配置;GPIOA->CRL &= ~GPIO_CRL_CNF0;  	//0x0cGPIOA->CRL |= GPIO_CRL_MODE0;	//0x03//3.PA0输出低电平;GPIOA->ODR &= ~GPIO_ODR_ODR0;	//4.使用一个死循环保存状态while(1){}
}

http://www.ppmy.cn/ops/129486.html

相关文章

RabbitMQ安装部署

安装Erlang 由于RabbitMQ是用Erlang语言编写的&#xff0c;所以在安装RabbitMQ之前需要安装Erlang 安装依赖 [rootpro-ex ~]yum install make gcc gcc-c build-essential openssl openssl-devel unixODBC unixODBC-devel kernel-devel m4 ncurses-devel设置Eralng的存储库 […

【ACM出版,EI稳定检索,九大高校联合举办, IEEE Fellow支持】2024年计算机视觉与艺术研讨会(CVA 2024)

在线投稿&#xff1a;学术会议-学术交流征稿-学术会议在线-艾思科蓝 2024年计算机视觉与艺术国际学术会议&#xff08;CVA 2024&#xff09;作为2024年人工智能、数字媒体技术与交互设计国际学术会议&#xff08;ICADI 2024)的分会。此次大会旨在汇聚全球在计算机视觉与艺术…

IBM刚刚发布了第三代Granite大型语言模型

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

numpy——数学运算

一、标量——矢量 import numpy as npa 3.14 b np.array([[9, 5], [2, 7]])print(a) print(b)# ---------- 四则运算 ---------- print(a b) # np.add print(a - b) # np.subtract print(a * b) # np.multiply print(a / b) # np.divide 二、矢量——矢量 import nump…

如何加密电脑磁盘?电脑本地磁盘加密方法介绍

随着信息技术的不断发展&#xff0c;电脑磁盘加密已经成为保护个人隐私和数据安全的重要手段。本文将介绍几种常见的电脑本地磁盘加密方法&#xff0c;帮助用户保护自己的数据安全。 文件夹只读加密专家 文件夹只读加密专家不仅可以加密电脑中的文件夹&#xff0c;还可以加密保…

VMware虚拟机启动报错“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”

之前正常使用的VMware虚拟机&#xff0c;突然启动时报错&#xff1a;此主机支持 Intel VT-x&#xff0c;但 Intel VT-x 处于禁用状态&#xff0c;详细信息如下截图所示。   百度错误信息&#xff0c;根据参考文献1中的方案&#xff0c;进入BIOS设置启动VT-x。进入BIOS后&…

Golang | Leetcode Golang题解之第506题相对名次

题目&#xff1a; 题解&#xff1a; var desc [3]string{"Gold Medal", "Silver Medal", "Bronze Medal"}func findRelativeRanks(score []int) []string {n : len(score)type pair struct{ score, idx int }arr : make([]pair, n)for i, s : …

SOLID - 接口隔离原则(Interface Segregation Principle)

SOLID - 接口隔离原则&#xff08;Interface Segregation Principle) 定义 接口隔离原则&#xff08;Interface Segregation Principle&#xff0c;ISP&#xff09;是面向对象设计中的五个基本原则之一&#xff0c;通常缩写为SOLID中的I。这一原则由Robert C. Martin提出&…