我怀疑我的设置顺序,如下:
//初始化GPIO接口
/* Enable GPIOC clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
/* Configure PA.8, PC.15 as Output push-pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_15 ;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* Configure PB.0 --, PB.9 as Output push-pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 |
GPIO_Pin_4 | GPIO_Pin_5 |GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 ;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
/* Configure PC.13, PC.14 as Output push-pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 ;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
后面应该怎么去设置输出的高低电平呢??
GPIO,定时,中断是菜鸟三部曲,可惜俺还没加电开机~~~
请问这几种方法编译长度都一样吗???哪个最佳???
谢谢~~~
GPIO_WriteBit(GPIOA, GPIO_Pin_15, Bit_SET); Bit_RESET是清零
GPIO_Write(GPIOA, 0x1101);
GPIO_SetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);
GPIO_ResetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);
GPIO,定时,中断是菜鸟三部曲
hotpower越来越崇拜你了,哈哈。
呵呵....條條大路通羅馬
GPIO_SetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);
GPIO_ResetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);
上面這個有點匯編語言的味道. ST7的BSET BRES
hehe,
感谢以上回复!
灵活且简单!这就是我喜欢st库的原因,hehe,缺点是时间长了,都忘了,
我是懒人,:D
hotpower,我没有具体看过汇编得结果
我上传个GPIO得例子,里面有上述几种方法的实例。工程包含了IAR和Keil的两种,可直接编译,在STM3210 Evaluation Board上调试。
我想从理论上看应该是Bit Band技术的代码要少一些指令吧。
相关链接:
https://bbs.eeworld.com.cn/upfiles/img/200712/2007122713140457.rar
哈哈~~~下午俺再研究一下~~~不过俺看STM32的汇编"很眼熟"~~~