网站大量收购闲置独家精品文档,联系QQ:2885784924

stm32学习笔记stm32学习笔记.docx

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
stm32学习笔记stm32学习笔记

Stm32学习笔记—寄存器版本养成良好的编程能力很重要!!!否则还以后的生活和工作当中会吃很大的亏的!在MDK中进行对stm32的学习中用寄存器进行学习只需要很简单的操作,比起用库函数进行学习大大降低了学习的难度。。。首先将system文件夹中的delay、sys以及usart三个文件夹复制到工程文件夹中并添加进工程当中去,然后再把一个启动文件复制到工程当中去并添加即可。LED跑马灯的学习:编写LED初始化函数,这其中包括GPIOX时钟的使能,然后就是对应LED的端口的设置,其中包括输入输出模式以及输出的形式(是高电平还是低电平);编写完成之后就是调用LED初始化函数进行试验。代码如下:voidLED_Init(void){RCC-APB2ENR|=13; //使能PORTB时钟RCC-APB2ENR|=16; //使能PORTE时钟GPIOB-CRL=0XFF0FFFFF; //输出模式GPIOB-CRL|=0//PB.5 推挽输出 GPIOB-ODR|=15; //PB.5 输出高GPIOE-CRL=0XFF0FFFFF;GPIOE-CRL|=0//PE.5推挽输出GPIOE-ODR|=15; //PE.5输出高}stm32中的IO口初始化之后默认的形式是下拉的。下面是几种常见的输入形式,最好记住用串口发送和接受数据首先肯定是使能串口时钟和串口所对应的io口时钟,设置io口的输入输出模式,然后复位串口、停止复位,设置波特率和校检位。至此串口已经初始化完毕。串口的波特率是根据以下公式算的以下是初始化串口的函数voiduart_init(u32 pclk2,u32 bound){ float temp;u16 mantissa;u16 fraction;temp=(float)(pclk2*1000000)/(bound*16);//得到USARTDIVmantissa=temp; //得到整数部分fraction=(temp-mantissa)*16; //得到小数部分 mantissa=4;//将最后的一个16进制位移开再与小数位相加mantissa+=fraction; RCC-APB2ENR|=12; //使能PORTA口时钟RCC-APB2ENR|=114; //使能串口时钟GPIOA-CRH=0XFFFFF00F;//IO状态设置GPIOA-CRH|=0X000008B0;//IO状态设置RCC-APB2RSTR|=114; //复位串口1RCC-APB2RSTR=~(114);//停止复位//波特率设置USART1-BRR=mantissa; // 波特率设置USART1-CR1|=0X200C; //1位起始,无校验位.#if EN_USART1_RX //如果使能了接收//使能接收中断USART1-CR1|=18; //PE中断使能USART1-CR1|=15; //接收缓冲区非空中断使能MY_NVIC_Init(3,3,USART1_IRQn,2);//组2,最低优先级#endif}外部中断事件初始化IO口为输入。开启IO口复用时钟,设置IO口与中断线的映射关系。APB2ENR寄存器开启与该IO口相对的线上事件,设置触发事件的条件。EXTI-FTSR下降沿触发发、EXTI-RTSR上升沿触配置中断分组(NVIC)并使能中断。RCC_CIR寄存器编写中断服务函数。独立看门狗事件(注意,在初始化时钟或者是计数器的时候应该是最后才使能时钟或者是计数器)在键寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗IWDG_PR和IWDG_RLR寄存器具有写保护功能。要修改这两个寄存器的值,必须先向IWDG_KR寄存器中写入0x5555。以不同的值写入这个寄存器将会打乱操作顺序,寄存器将重新被保护。重装载操作(即写入0xAAAA)也会启动写保护功能。voidIWDG_Init(u8 prer,u16 rlr) {IWDG-KR=0X5555;//使能对IWDG-PR和IWDG-RLR的写,因为KR寄存器有写保护功能IWDG-PR=prer; //设置分频系数IWDG-RLR=rlr; //从加载寄存器 IWDG-RLR IWDG-KR=0XAAAA;//reloadIWDG-KR=0XCCCC;//使能看门狗}3)独立看门狗计数器一旦开始后就要不断地对其进行喂狗操作,否则当其被计数到零时就会引起系统复位。喂狗操作就是想KR寄存器中写入0xAAAA,使其自动进行重载操作。voidIWDG_Feed(void){IWDG-KR=0XAAAA;//reload}窗口看门狗事件首先使能窗口看门狗时钟,在

文档评论(0)

cduutang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档