stm32学习笔记
更新时间:2023-09-11 13:57:01 阅读量: 教育文库 文档下载
- stm32怎么学推荐度:
- 相关推荐
MDK不会让你直接在入口 参数处设置一个简单的字, 因为这样代码可读性太差
MDK一般把取值范围的宏定义放在判断有效性语句的上方,这样是为了方便大家查找
可以通过|(或)的方式同时初始化多个IO口。这样操作的前提是,他们的Mode和Speed参数相同,因为Mode和Speed参数并不能一次定义多种
在stm32f10x.h看那些外设是挂载在那个总线之下
GPIO操作步骤为:
1) 使能IO口时钟。调用函数为RCC_APB2PeriphClockCmd()。 2) 初始化IO参数。调用函数GPIO_Init(); 3) 操作IO。
按键一端接高电平时另一端接I/O口则I/O口设置为下拉输入,因为按键按下时I/O口变成高电平;反之接低电平时I/O口设置为上拉输入因为按键按下时I/O口状态为低电平
Config意为配置
void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);这个函数的作用是对中断的优先级进行分组,这个函数在系统中只能被调用一次,一旦分组确定就最好不要更改
当接收到从电脑发过来的数据,把接收到的数据保存在USART_RX_BUF中,同时在接收状态寄存器(USART_RX_STA)中计数接收到的有效数据个数,当收到回车(回车的表示由2个字节组成:0X0D和0X0A)的第一个字节0X0D时,计数器将不再增加,等待0X0A的到来,而如果0X0A没有来到,则认为这次接收失败,重新开始下一次接收。如果顺利接收到0X0A,则标记USART_RX_STA的第15位,这样完成一次接收,并等待该位被其他程序清除,从而开始下一次的接收,而如果迟迟没有收到0X0D,那么在接收数据超过USART_REC_LEN的时候,则会丢弃前面的数据,重新接收。
USART初始化需要设置的参数为:波特率,字长,停止位,奇偶校验位,硬件数据流控制,模式(收,发)。
① 串口时钟使能,GPIO时钟使能 ② 串口复位
③ GPIO端口模式设置 ④ 串口参数初始化
⑤ 初始化NVIC并且开启中断
⑥ 使能串口
SysTick是系统滴答计时器
在EXTI_GetITStatus函数中会先判断这种中断是否使能,使能了才去判断中断标志位,而
EXTI_GetFlagStatus直接用来判断状态标志位。
IO口外部中断的一般步骤: 1)初始化IO口为输入。
2)开启IO口复用时钟,设置IO口与中断线的映射关系。 3)初始化线上中断,设置触发条件等。 4)配置中断分组(NVIC),并使能中断。 5)编写中断服务函数。
对寄存器AFIO_EVCR,AFIO_MAPR和AFIO_EXTICRX进行读写操作前,应当首先打开AFIO的时钟。参考APB2外设时钟使能寄存器(RCC_APB2ENR)。
独立看门狗的时钟是一个内部RC时钟,所以并不是准确的40Khz,而是在30~60Khz之间的一个可变化的时钟,只是我们在估算的时候,以40Khz的频率来计算,看门狗对时间的要求不是很精确。
单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路就是为了避免这种情况的发生。看门狗的作用就是在一定时间内(通过定时计数器实现)没有接收喂狗信号(表示MCU已经挂了),便实现处理器的自动复位重启(发送复位信号)。
IWDG_PR和IWDG_RLR寄存器具有写保护功能。要修改这两个寄存器的值,必须先向IWDG_KR寄存器中写入0x5555。将其他值写入这个寄存器将会打乱操作顺序,寄存器将重新被保护。重装载操作(即写入0xAAAA)也会启动写保护功能。
看门狗的喂狗时间(也就是看门狗溢出时间),该时间的计算方式为: Tout=((4×2^prer)×rlr) /40
其中Tout为看门狗溢出时间(单位为ms);prer为看门狗时钟预分频值(IWDG_PR值),范围为0~7;rlr为看门狗的重装载值(IWDG_RLR的值);
如果不用IWDG的话,就不要去打开它,免得麻烦。
窗口看门狗的上窗口值(W[6:0])是由用户自己设定的,根据实际要求来设计窗口值,但是一定要确保窗口值大于0X40,否则窗口就不存在了。
窗口看门狗的超时公式如下:
Twwdg=(4096×2^WDGTB×(T[5:0]+1)) /Fpclk1; 其中:
Twwdg:WWDG超时时间(单位为ms) Fpclk1:APB1的时钟频率(单位为Khz) WDGTB:WWDG的预分频系数 T[5:0]:窗口看门狗的计数器低6位
根据上面的公式,假设Fpclk1=36Mhz,那么可以得到最小-最大超时时间表如表12.1.1所示:
表12.1.136M时钟下窗口看门狗的最小最大超时表
WDGA位则是看门狗的激活位,该位由软件置1,以启动看门狗,并且一定要注意的是该位一旦设置,就只能在硬件复位后才能清零了。
窗口看门狗步设置骤如下: 1)使能WWDG时钟
WWDG不同于IWDG,IWDG有自己独立的40Khz时钟,不存在使能问题。而WWDG使用的是PCLK1的时钟,需要先使能时钟。方法是:
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE); // WWDG时钟使能 2)设置窗口值和分频数 设置窗口值的函数是:
void WWDG_SetWindowValue(uint8_t WindowValue); 这个函数就一个入口参数为窗口值,很容易理解。 设置分频数的函数是:
void WWDG_SetPrescaler(uint32_t WWDG_Prescaler); 这个函数同样只有一个入口参数就是分频值。 3)开启WWDG中断并分组 开启WWDG中断的函数为:
WWDG_EnableIT(); //开启窗口看门狗中断
接下来是进行中断分组,这里就不重复了,使用NVIC_Init函数即可。 4) 设置计数器初始值并使能看门狗
这一步在库函数里面是通过一个函数实现的: void WWDG_Enable(uint8_t Counter);
该函数既设置了计数器初始值,同时使能了窗口看门狗。 5) 编写中断服务函数
在最后,还是要编写窗口看门狗的中断服务函数,通过该函数来喂狗,喂狗要快,否则当窗口看门狗计数器值减到0X3F的时候,就会引起软复位了。在中断服务函数里面也要将状态寄存器的EWIF位清空。
正在阅读:
stm32学习笔记09-11
南京大学社会心理学第3次作业01-06
2018届中考语文专题复习一记叙文阅读(含散文小说)常考记叙文(含散文小说)分类训练07-29
日本九洲水环境治理与水产养殖考察03-24
辩论赛10-24
用电信息采集专变采集终端安装规范09-12
小学个人校本总结10-14
三维立体图片02-19
《心理与教育测量》练习与思考题03-07
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 笔记
- 学习
- stm32
- 企业并购的风险与防范-毕业论文
- 精品2019学年七年级地理上学期第一次月考试题 粤教版(新版)人教版
- 韩国输出入银行贷款协议
- 《中国共产党地方委员会工作条例》解读下试卷一
- 江苏科技大学电气工程及其自动化专业本科毕业设计(论文) - 图文
- 搪瓷反应釜维护保养标准操作规程
- SATA硬盘启用AHCI模式详解
- 部编人教版九年级历史上册第二单元检测题(无答案)
- 增值税一般纳税人资格认定管理办法
- 数据结构上机
- 实验五 苯乙烯乳液聚合
- 把党组织政治优势转化为企业核心竞争力研究
- 新人教版2019-2020学年六年级数学上册第1 - 8单元试卷
- 2013高考数学(理)二轮复习配套作业(解析版):专题限时集训(九)(湖北省专用)
- 学校体育学试题
- 游艇简介a
- 华师17年3月课程考试《财税法》作业考核试题
- 高考语文阅读中的作用题如何答
- 2018年学校后勤年终工作总结与2018年学校后勤服务中心工作总结报告汇编 doc
- 常见构造超清晰图片