2.外设的初始化和设置

1.声明一个结构 PPP_InitTypeDe

PPP_InitTypeDef    PPP_InitStructure;

//XX类型定义初始化,XX结构体初始化
//先确定使用什么类型,再去初始化相应的结构体

Init      --------初始化
Type      --------类型
Def       --------定义(define的缩写)
Structure --------结构体

2.在设置一个外设前,必须调用以下一个函数来使能它的时钟

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_PPPx, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_PPPx, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PPPx, ENABLE);

3.为变量 PPP_InitStructure 的各个结构成员填入允许的值

4. 调用函数 PPP_Init(..)来初始化外设 PPP

5.LED灯的初始化举例

void LED_Init(void)
{
 GPIO_InitTypeDef  GPIO_InitStructure;
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);	
	
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;				
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 
 GPIO_Init(GPIOB, &GPIO_InitStructure);					
 GPIO_SetBits(GPIOB,GPIO_Pin_5);						
}


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当然,下面是一个CAN1外设初始化的代码示例: ```c #include "stm32f4xx.h" void CAN1_Init(void) { CAN_InitTypeDef CAN_InitStruct; CAN_FilterInitTypeDef CAN_FilterInitStruct; // 使能CAN1时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE); // 初始化CAN1 CAN_DeInit(CAN1); CAN_StructInit(&CAN_InitStruct); CAN_InitStruct.CAN_TTCM = DISABLE; // 禁用时间触发通信模式 CAN_InitStruct.CAN_ABOM = DISABLE; // 禁用自动离线管理 CAN_InitStruct.CAN_AWUM = DISABLE; // 禁用自动唤醒模式 CAN_InitStruct.CAN_NART = DISABLE; // 禁用报文自动重传 CAN_InitStruct.CAN_RFLM = DISABLE; // 禁用报文锁定模式 CAN_InitStruct.CAN_TXFP = DISABLE; // 禁用发送FIFO优先级 CAN_InitStruct.CAN_Mode = CAN_Mode_Normal; // 设置CAN模式为正常模式 CAN_InitStruct.CAN_SJW = CAN_SJW_1tq; // 设置同步跳转宽度为1个时间单位 CAN_InitStruct.CAN_BS1 = CAN_BS1_9tq; // 设置时间段1为9个时间单位 CAN_InitStruct.CAN_BS2 = CAN_BS2_4tq; // 设置时间段2为4个时间单位 CAN_InitStruct.CAN_Prescaler = 3; // 设置波特率分频器为3,即CAN时钟为45MHz/(1+9+4)/3=1Mbps CAN_Init(CAN1, &CAN_InitStruct); // 配置CAN1过滤器 CAN_FilterInitStruct.CAN_FilterNumber = 0; // 过滤器编号为0 CAN_FilterInitStruct.CAN_FilterMode = CAN_FilterMode_IdMask; // 设置过滤器模式为标识符屏蔽位模式 CAN_FilterInitStruct.CAN_FilterScale = CAN_FilterScale_32bit; // 设置过滤器位宽为32位 CAN_FilterInitStruct.CAN_FilterIdHigh = 0x0000; // 设置过滤器标识符高位 CAN_FilterInitStruct.CAN_FilterIdLow = 0x0000; // 设置过滤器标识符低位 CAN_FilterInitStruct.CAN_FilterMaskIdHigh = 0x0000; // 设置过滤器屏蔽位高位 CAN_FilterInitStruct.CAN_FilterMaskIdLow = 0x0000; // 设置过滤器屏蔽位低位 CAN_FilterInitStruct.CAN_FilterFIFOAssignment = CAN_Filter_FIFO0; // 设置过滤器关联的FIFO为FIFO0 CAN_FilterInitStruct.CAN_FilterActivation = ENABLE; // 使能过滤器 CAN_FilterInit(&CAN_FilterInitStruct); } ``` 这段代码使用了STM32F4系列的HAL库来初始化CAN1外设。首先,通过`RCC_APB1PeriphClockCmd`函数使能CAN1的时钟。然后,使用`CAN_DeInit`函数将CAN1外设重置为默认值,并使用`CAN_StructInit`函数初始化CAN_InitStruct结构体。接下来,根据需要设置CAN的各种参数,如通信模式、同步跳转宽度、时间段1和时间段2的长度、波特率分频器等。最后,使用`CAN_Init`函数初始化CAN1外设。 此外,代码还配置了CAN1的过滤器,通过`CAN_FilterInitStruct`结构体设置过滤器的相关参数,如过滤器编号、过滤器模式、过滤器位宽、过滤器标识符和屏蔽位等。最后,使用`CAN_FilterInit`函数初始化CAN1的过滤器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊不胜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值