完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
串口:
串口操作相关库函数(省略入口参数): void USART_Init(); //串口初始化:波特率,数据字长,奇偶校验,硬件流控以及收发使能 void USART_Cmd();//使能串口 void USART_ITConfig();//使能相关中断 void USART_SendData();//发送数据到串口,DR uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据 FlagStatus USART_GetFlagStatus();//获取状态标志位 void USART_ClearFlag();//清除状态标志位 ITStatus USART_GetITStatus();//获取中断状态标志位 void USART_ClearITPendingBit();//清除中断状态标志位 串口配置的一般步骤: ① 串口时钟使能:RCC_APBxPeriphClockCmd(); GPIO时钟使能:RCC_AHB1PeriphClockCmd(); ② 引脚复用映射: GPIO_PinAFConfig(); ③GPIO端口模式设置:GPIO_Init(); 模式设置为GPIO_Mode_AF ④串口参数初始化:USART_Init(); ⑤开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤) NVIC_Init(); USART_ITConfig(); ⑥使能串口:USART_Cmd(); ⑦编写中断处理函数:USARTx_IRQHandler(); ⑧串口数据收发: voidUSART_SendData();//发送数据到串口,DR uint16_tUSART_ReceiveData();//接受数据,从DR读取接受到的数据 ⑨串口传输状态获取: FlagStatusUSART_GetFlagStatus(); voidUSART_ClearITPendingBit(); 外部中断: 中断服务函数列表: EXTI0_IRQHandler EXTI1_IRQHandler EXTI2_IRQHandler EXTI3_IRQHandler EXTI4_IRQHandler EXTI9_5_IRQHandler EXTI15_10_IRQHandler 外部中断常用库函数: ① voidSYSCFG_EXTILineConfig(uint8_t EXTI_PortSourceGPIOx, uint8_t EXTI_PinSourcex); //设置IO口与中断线的映射关系 如;SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE,EXTI_PinSource2);//区别M3 ②void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct); //初始化中断线:触发方式等 ③ITStatus EXTI_GetITStatus(uint32_t EXTI_Line); //判断中断线中断状态,是否发生 ④void EXTI_ClearITPendingBit(uint32_t EXTI_Line); //清除中断线上的中断标志位 ⑤RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);//使能SYSCFG时钟 //这个函数非常重要,在使用外部中断的时候一定要先使能SYSCFG时钟 外部中断的一般配置步骤: ① 使能SYSCFG时钟:RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE); ② 初始化IO口为输入。GPIO_Init(); ③ 设置IO口与中断线的映射关系。void SYSCFG_EXTILineConfig(); ④ 初始化线上中断,设置触发条件等。EXTI_Init(); ⑤ 配置中断分组(NVIC),并使能中断。NVIC_Init(); ⑥ 编写中断服务函数。EXTIx_IRQHandler(); ⑦ 清除中断标志位EXTI_ClearITPendingBit(); 看门狗: 独立看门狗: 在键值寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗。此时计数器开始从其复位值0xFFF递减,当计数器值计数到尾值0x000时会产生一个复位信号(IWDG_RESET)。 无论何时,只要在键值寄存器IWDG_KR中写入0xAAAA(通常说的喂狗), 自动重装载寄存器IWDG_RLR的值就会重新加载到计数器,从而避免看门狗复位。 如果程序异常,就无法正常喂狗,从而系统复位。 IWDG独立看门狗操作库函数: voidIWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess);//取消写保护:0x5555使能 voidIWDG_SetPrescaler(uint8_t IWDG_Prescaler);//设置预分频系数:写PR voidIWDG_SetReload(uint16_t Reload);//设置重装载值:写RLR voidIWDG_ReloadCounter(void);//喂狗:写0xAAAA到KR voidIWDG_Enable(void);//使能看门狗:写0xCCCC到KR FlagStatusIWDG_GetFlagStatus(uint16_t IWDG_FLAG);//状态:重装载/预分频 更新 独立看门狗操作步骤:、 ① 取消寄存器写保护:IWDG_WriteAccessCmd(); ② 设置独立看门狗的预分频系数,确定时钟:IWDG_SetPrescaler(); ③ 设置看门狗重装载值,确定溢出时间:IWDG_SetReload(); ④ 使能看门狗IWDG_Enable(); ⑤ 应用程序喂狗: IWDG_ReloadCounter(); ⑥ 溢出时间计算: Tout=((4×2^prer) ×rlr)/32 (M4) 窗口看门狗: ` 窗口看门狗工作过程总结: STM32F的窗口看门狗中有一个7位的递减计数器T[6:0],它会在出现下述2种情况之一时产生看门狗复位: ① 当喂狗的时候如果计数器的值大于某一设定数值W[6:0]时,此设定数值在WWDG_CFR寄存器定义。 ② 当计数器的数值从0x40减到0x3F时【T6位跳变到0】。 如果启动了看门狗并且允许中断,当递减计数器等于0x40时产生早期唤醒中断(EWI),它可以用于喂狗以避免WWDG复位。 窗口看门狗配置过程: ① 使能看门狗时钟: RCC_APB1PeriphClockCmd(); ② 设置分频系数: WWDG_SetPrescaler(); ③ 设置上窗口值: WWDG_SetWindowValue(); ④ 开启提前唤醒中断并分组(可选): WWDG_EnableIT(); NVIC_Init(); ⑤ 使能看门狗: WWDG_Enable(); ⑥ 喂狗: WWDG_SetCounter(); ⑦编写中断服务函数 WWDG_IRQHandler(); |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1609 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1540 浏览 1 评论
970 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
681 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1587 浏览 2 评论
1861浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
643浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
515浏览 3评论
528浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
503浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 21:30 , Processed in 2.685492 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号