C语言的小问题

本文介绍了STM32的位操作,包括清零与位设置、移位运算,以及复位、时钟控制和中断。同时,讲解了C语言的基础语法,如结构体指针、数组与指针的关系,以及const关键字的用法。还提到了自定义函数,例如将char数组转换为int数字的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、STM 32的小知识点

1. 最常用的位操作(清零与位设置)

复习

  1. “与或非”运算
  2. &=|= 运算

代码

GPIOA->CRL &= 0xFFFFFF0F; // 4~7位清零
GPIOA->CRL |= 0x00000040; // 4~7位设为1.设置相应位置的值

2. 移位运算符

  1. 左移
    • 相当于乘以2的n次方,最低位补0;
  2. 右移
    • 相当于除以2的n次方,最高位正数补1,负数补0;

代码

/* 将 1 左移 pinpos 位 */
GPIOx->BSRR = (((unit32_t)0x01)<<pinpos); // 将pinpos位设置为1

3. 复位与时钟控制

  1. 系统复位(所有寄存器)
  2. 上电复位(除备份区外,所有的寄存器)
  3. 备份域复位

4. 使能时钟(enable)

  • 时钟如同单片机的心脏,使能了时钟,才能工作。那么这个“使能”究竟什么意思呢?

实际上,使能的英语就是enable,打开的意思。
相对地,stm32 默认的时钟状态是 disable,关闭的,不工作。

  • 说明

stm32 有一种时钟门控技术,disable状态下不工作,可以省电,所以,我们需要使用某个GPIO口的时候,一定要先调用使能函数,让它上电工作。

  • 补充

端口重映射还需要 AFIO 口时钟

  • STM 32 的几种时钟
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值