奏奏奏 发表于 2017-3-15 09:44:42

本帖最后由 奏奏奏 于 2017-3-15 09:46 编辑

/* USER CODE BEGIN 2 */

/* USER CODE END 2 */

/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */
                HAL_Delay(2000);
                HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_All);
               
}
/* USER CODE END 3 */

队长shiwo 发表于 2017-3-15 10:04:12

奏奏奏 发表于 2017-3-15 09:44


这个是全部反转GPIOB的值吧

MrJiu 发表于 2017-3-15 10:13:22

直接右键,看一下代码实现,不就很清楚了嘛!!!!开源,啥叫开源,就是用来看滴!!!;P;P;P

zhao.zhao 发表于 2017-3-15 10:16:18

队长shiwo 发表于 2017-3-15 08:45
#define IO_Data_Set(x)      HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,(x&0x00f0))
这样子行不行的 ...

你的意思是给GPIOC端口赋值0X00F0, 这样赋值不行的,0X00F0 !=0 所以作为 “1”来处理,
这样你GPIOC端口所有的输出都是"1";如果你要按你的意愿来做,只有直接写寄存器。自己做个函数吧。网上例子挺多的。

队长shiwo 发表于 2017-3-15 10:17:49

MrJiu 发表于 2017-3-15 10:13
直接右键,看一下代码实现,不就很清楚了嘛!!!!开源,啥叫开源,就是用来看滴!!! ...

看的懂那个库函数的,就是找不到GPIO_Write()功能的函数而已,

队长shiwo 发表于 2017-3-15 10:19:58

zhao.zhao 发表于 2017-3-15 10:16
你的意思是给GPIOC端口赋值0X00F0, 这样赋值不行的,0X00F0 !=0 所以作为 “1”来处理,
这样你GPIOC端 ...

void IO_Write_DataBit(uchar data)
{

GPIOC->ODR |= 0xff;
GPIOC->ODR &= data;
   
}
我也是这样想的,直接操作寄存器算了,上面那个函数应该可以实现了吧

zhao.zhao 发表于 2017-3-15 10:26:08

zhao.zhao 发表于 2017-3-15 10:16
你的意思是给GPIOC端口赋值0X00F0, 这样赋值不行的,0X00F0 !=0 所以作为 “1”来处理,
这样你GPIOC端 ...

#define    GPIOCout(x)       GPIOC->ODR=x;      // GPIOC端口输出 X

先把GPIOC都设置为推挽输出,然后试试这个

zhao.zhao 发表于 2017-3-15 10:29:44

";"可以不要写,程序中直接调用"GPIOCout(0x00f0);"

队长shiwo 发表于 2017-3-15 10:35:39

zhao.zhao 发表于 2017-3-15 10:29
";"可以不要写,程序中直接调用"GPIOCout(0x00f0);"

非常感谢了
页: 1 [2]
查看完整版本: 求助个HAL库函数问题--关于IO口写函数