www.ymjm.net > STM32的位操作问题

STM32的位操作问题

1.例子如下: GPIO_Write(GPIOC,DataBus);或者不用库 GPIOC->ODR &= 0XFF00; GPIOC->ODR |= DataBus;流水就简单了移位即可 不用写了吧2.先读出才知道状态啊,不读也可以啊 不要那么死3.中断向量表 肯定是固定的 不然怎么知道是哪个中断.只是优先级可设置

问题:硬件配置错误,或者程序错误 解决办法:datasheet,仔细思考,网络

F103用过没问题

是将RAM和外设中的每一个bit映射到一个独立的地址,对这个地址的32位读写操作实现对一个bit的操作,就像51单片机中的位寻址区域一样.

1、stm32 的每个 io 端口都有 7 个寄存器来控制 (1)配置模式的 2 个 32 位的端口 配置寄存器 crl 和 crh (2)2 个 32 位的数据寄存器 idr 和 odr (3)1 个 32 位的置位/复位寄存器 bsrr (4)一个 16 位的复位寄存器 brr (5)1 个 32 位的锁存寄存器 lckr.

寄存器操作:51就是寄存器操作,你用51需要自己写驱动.STM32如果不用库也是跟51一样直接操作寄存器的.库函数操作:STM32的库已经帮你把驱动写好了,你要做的只是配置参数,然后使能.寄存器的优缺点:速度快,但是可读性差,你要改动配置需要去查芯片手册.库函数的优缺点:速度慢,但是可读性强,用GPIO_PIN_5这类可读性强的英文字母,去替代0x0101这类可读性差的数字.

相当于51单片机的位寻址.

我最近买了一块STM32的板子,可能过一两天就到了,为了能学习Cortex-M3,我找到一些相关资料:《Cortex-M3权威指南》, 地址:http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=1319637&bbs_page_no=1&search_mode=1&search_text=Cortex-M3&bbs_id=9999,在此感谢这位网友.个人感觉学ARM跟学51一样,一些原理还是相同的,所以方法上也应该有些相通的地方.一起学习吧,加油!

把寄存器定义为结构体,寄存器里的位都是“位域”,例如:typedef struct { uint8_t enable : 1; uint8_t tick_int : 1; uint8_t clk_source: 1; uint16_t : 13; uint8_t count_flag : 1;} Systick_Ctrl;然后定义该寄存器的指针:#define SYSTICK_CTRL ((Systick_Ctrl*) 0xe000e010)在程序中访问时这样:SYSTICK_CTRL->enable = 1;

把pao(8) = 1;换成:gpio_setbits(gpioa,gpio_pin_8);试试.

友情链接:hyqd.net | jinxiaoque.net | qyhf.net | qwrx.net | ddng.net | 网站地图

All rights reserved Powered by www.ymjm.net

copyright ©right 2010-2021。
www.ymjm.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com