赞
踩
1.该笔记为本人学习时做的一些笔记,仅为个人学习只用,可能存在错误或缺陷
2.本人是在 正点原子 平台学习,具有大量视频,讲解清楚
1) 使能 IO 口时钟。
调用函数为 RCC_APB2PeriphClockCmd()。
2) 初始化 IO 参数。
调用函数 GPIO_Init();
3) 操作 IO。
GPIO_SetBits()、GPIO_ResetBits ()等
**1) 串口时钟使能,GPIO 时钟使能;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA,ENABLE);
2) 串口复位;
USART_DeInit(USART1);(一般不用)
3) GPIO 端口模式设置
GPIO_Init();
4) 串口参数初始化;
USART_Init();
5) 开启中断并且初始化 NVIC(如果需要开启中断才需要这个步骤);
接收中断:USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
发送结束中断:USART_ITConfig(USART1,USART_IT_TC,ENABLE);
6) 使能串口;
USART_Cmd(USART1, ENABLE);
7) 编写中断处理函数;
void USART1_IRQHandler(void) { };
接收:USART_ReceiveData(USART1);
发送: USART_SendData(USART1,res);
**1)初始化 IO 口为输入。
GPIO_Init();//设置为输入
2)开启 AFIO 时钟。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
3)设置 IO 口与中断线的映射关系。
GPIO_EXTILineConfig(GPIO_PortSourceGPIOx,GPIO_PinSourcex);
4)初始化线上中断,设置触发条件等。
EXTI_Init();
5)配置中断分组(NVIC),并使能中断。
中断优先级分组:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);初始化NVIC: NVIC_Init();
6)编写中断服务函数。
void EXTI3_IRQHandler(void){ }
1)取消寄存器 写保护 (向 向 IWDG_KR 写入 0X5555);
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
2) 设置独立看门狗的 预 分频系数和重装载值;
IWDG_SetPrescaler(uint8_t IWDG_Prescaler); //设置 IWDG 预分频值
IWDG_SetReload(uint16_t Reload); //设置 IWDG 重装载值
3) 重载计数值 喂狗 (向 向 IWDG_KR 写入 0XAAAA );
IWDG_ReloadCounter(); //按照 IWDG 重装载寄存器的值重装载 IWDG 计数器
4) 启动看门狗(向 向 IWDG_KR 写入 0XCCCC);
IWDG_Enable(); //使能 IWDG
1) 能 使能 WWDG 时钟;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE); // WWDG 时钟使能
2) 设置窗口值和分频数;
void WWDG_SetWindowValue(uint8_t WindowValue);//设置看门狗的上窗口值
void WWDG_SetPrescaler(uint32_t WWDG_Prescaler); //分频值
3) )启 开启 WWDG 中断并分组;
WWDG_EnableIT(); //开启窗口看门狗中断
4 ) 设置计数器初始值并 设置计数器初始值并;
void WWDG_Enable(uint8_t Counter);
5 ) 编写中断服务函数;
1 )TIM3 时钟使能。
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能
2) 初始化定时器参数 数, 设置 自动重装值 , 分频系数 ,计数方式 等。
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitSture); //初始化定时器参数
3) 设置 TIM3_DIER 允许更新中断。
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE );
4 )TIM3 中断 优先级。
NVIC_Init();
5) 许 允许 TIM3 工作能 ,也就是使能 TIM3 。
TIM_Cmd(TIM3, ENABLE); //使能 TIMx 外设
6) 编写中断服务函数。
void TIM3_IRQHandler(void){ }
1) 开启 TIM3 时钟 以及复用功能时钟置 ,配置 PB5 为复用输出。
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //使能定时器 3 时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOA, ENABLE); //复用时钟使能
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
2)设置 TIM3_CH2 重映射到 PB5 上。
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);
3) 初始化 TIM3, 设置 TIM3 的 的 ARR 和 PSC。
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据指定的参数初始化 TIMx 的
4) 设置 TIM3_CH2 的 的 PWM 模式能 ,使能 TIM3 的 CH2 输出。
TIM_OC2Init(TIM3, &TIM_OCInitStructure); //初始化 TIM3 OC2 通道二
5) 使能 TIM3 。
TIM_Cmd(TIM3, ENABLE); //使能 TIM3
6)修改 TIM3_CCR2 来控制占空比。
TIM_SetCompare2(TIM_TypeDef* TIMx, uint16_t Compare2); // 修改ccr2的值
1 )开启 TIM5 时钟和 和 GPIOA 时钟 ,置 配置 PA0 为下拉输入。
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE); //使能 TIM5 时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能 GPIOA 时钟
设置PA5的模式为下拉输入
2) 初始化 TIM5, 设置 TIM5 的 的 ARR 和 PSC 。
TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure); //根据指定的参数初始化 Tim5
3 )设置 TIM5 的输入比较参数,开启输入捕获
TIM_ICInit(TIM5, &TIM5_ICInitStructure);
4 )使能捕获和更新中断置 (设置 TIM5 的 DIER 寄存器)
TIM_ITConfig( TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE);//允许更新中断和捕获中断
5)使能定时器置 (设置 TIM5 的 的 CR1 寄存器)
TIM_Cmd(TIM5,ENABLE ); //使能定时器 5
6 )设置中断分组,
NVIC_Init();
7)编写中断服务函数
1)启 开启 PA 口时钟和 和 ADC1 时钟置 ,设置 PA1 为模拟输入。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_ADC1,ENABLE); //使能ADC和GPIOA外设时钟
GPIO_InitTypStru.GPIO_Mode=GPIO_Mode_AIN; //将是同ADC通道设置为模拟输入
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oGXaIeCN-1609641807177)(C:\Users\18264\AppData\Roaming\Typora\typora-user-images\image-20201004151059331.png)]
2)位 复位 ADC1 ,同时置 设置 ADC1 分频因子。
RCC_ADCCLKConfig(RCC_PCLK2_Div6); //设置ADC分频因子
ADC_DeInit(ADC1); //ADC时钟复位
3)化 初始化 ADC1 参数,置 设置 ADC1 的工作模式 以及规则序列的相关信息。
ADC_Init(ADC1, &ADC_InitStructure); //根据指定的参数初始化外设 ADCx
4)使能 ADC 并校准。
ADC_Cmd(ADC1, ENABLE); //使能指定的 ADC1
ADC_ResetCalibration(ADC1);
while(ADC_GetResetCalibrationStatus(ADC1)); //等待复位校准结束
ADC_StartCalibration(ADC1); //开始指定 ADC1 的校准状态
while(ADC_GetCalibrationStatus(ADC1)); //等待校 AD 准结束
5) 读取 ADC 值。
ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );
ADC_SoftwareStartConvCmd(ADC1, ENABLE);//使能指定的 ADC1 的软件转换启动功能
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束
ADC_GetConversionValue(ADC1); 转换值
读取 ADC 值。**
ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );
ADC_SoftwareStartConvCmd(ADC1, ENABLE);//使能指定的 ADC1 的软件转换启动功能
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束
ADC_GetConversionValue(ADC1); 转换值
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。