|
终于开始系统学习STM32了,以前偶尔看一眼,总是不能坚持,总是这样那样的借口,向后推迟,但始终在俺强大的内心深沟里,想学它。/ z; F$ h) u" B2 } 废话少说,这就开干了,用的MDK做开发环境。$ F! z! W" e v 先学简单的IO口的操作,这可是入门的很重要的一步,不学好打击积极性。 GPIO->ODR 这是我第一次见到这样的书写方式,决定百度一下。 GPIO->ODR是32位的输出数据寄存器(高16位保留,低16为依次对应某个GPIO口的16个引脚)。对ODR赋值是一次操作16位的,也就是同时设置了16个引脚的输出电平;而GPIO_PIN是指某个端口的具体某一个引脚,是位操作,可以通过设置BSRR或BRR寄存器来设置某一特定引脚的输出电平,而保持其他引脚输出不变,速度快,效率高。具体可以看看stm32参考手册关于GPIO寄存器的说明#include <stm32f10x_lib.h> // STM32F10x Library Definitions3 m" Q% s+ @4 _& E# e6 S6 H #include "STM32_Init.h" // STM32 Initialization ' ]- g* r7 ]' U& n f1 K& _ #define LED ( 1 << 5 ) // PB5: LED D25 Q3 P4 m3 S8 C3 p( m8 ^6 G. w 6 y, p: N0 E3 z/ [ void Delay(vu32 nCount) {4 Y& F7 X2 P3 {: B0 a. k for(; nCount != 0; nCount--);/ ^/ B3 z7 l* u8 u5 ~4 t) B } 1 c$ a! O* x+ x9 s; o( l7 ]' ] ! z' a& z; _0 S int main (void) { ]& d0 a0 B* [: O& w G stm32_Init (); // STM32 setup for(;;) { //GPIOB->ODR &= ~LED;# P9 O, `* P2 I. L8 v5 D u' } //我将/GPIOB->ODR &= ~LED;换成了GPIOB->BRR = GPIO_Pin_5;显示效果不变1 Z" M- |; [3 J- _ p: X1 X GPIOB->BRR = GPIO_Pin_5; // switch on LED Delay(2000000); //GPIOB->ODR |= LED; // switch off LED GPIOB->BSRR = GPIO_Pin_5; Delay(2000000);: Q4 T* K5 N( e) K$ X& b }7 g4 {- A! K0 F& X% i6 v } 4 ]" e& V. r+ v5 s0 w |
| 希望大神带我飞,, |
| 谢谢楼主分享 我也会点灯了 |
谢谢分享。学习了啊
|
| 我只是初学者,, |
|
good job |
| LZ代码整理下,好乱 |
| 星星点灯了 |
三狼总是学习学习的,嘿嘿 |
| 就爱这么简洁的风格 |
微信公众号
手机版