-
STM32移植到GD32是怎么移植的?
移植是只用更换库文件,启动文件什么的吗?程序内容需要改吗?看着STM32的时钟开启函数,GPIO初始化函数都与GD的不同,移植需要该吗?
3039浏览量 1回复量 关注量 -
MM32F003TW把下载口作为普通IO口吗?
MM32F003TW把下载口作为普通IO口,需要加什么语句防止锁死吗?如果stm32的是需要加下面两句把端口复用使能、把JTAG功能关闭。[color=#4d4d4d][backcolor=rgb(255, 255, 255)][font=-apple-system, "][size=16px]CC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);[/size][/font][/backcolor][/color][color=#4d4d4d][backcolor=rgb(255, 255, 255)][font=-apple-system, "][size=16px]GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);// PB3,PB4 PA15(这函数在GPIO库文件里面),[/size][/font][/backcolor][/color][color=rgb(77, 77, 77)][backcolor=rgb(255, 255, 255)][font=-apple-system, "][size=16px]GPIO_Remap_SWJ_JTAGDisable官方定义在GIPO头文件里面。[/size][/font][/backcolor][/color] [color=rgb(77, 77, 77)][backcolor=rgb(255, 255, 255)][font=-apple-system, "][size=16px]看了MM32的GPIO头文件也有类似定义,但GPIO的文件找不到[/size][/font][/backcolor][/color][color=rgb(77, 77, 77)][backcolor=rgb(255, 255, 255)][font=-apple-system, "][size=16px]GPIO_PinRemapConfig 类似函数。。求解。[/size][/font][/backcolor][/color]
2071浏览量 1回复量 关注量 -
MM32F103RET6 SPI1设置问题
void SPI1_Init(void) { SPI_InitTypeDef SPI_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE); //SPI1 clk enable GPIO_PinAFConfig(GPIOA, GPIO_PinSource4, GPIO_AF_0); GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_0); GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_0); GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_0); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; //spi1_cs pa4 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //spi1_sck pa5 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // 推免复用输出 GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; //spi1_mosi pa7 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // 推免复用输出 GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //spi1_miso pa6 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode =GPIO_Mode_AF_PP; //推免复用输出 GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GT22L_HOLD; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GT22L_HOLD_PORT, &GPIO_InitStructure); GT22L_HOLD_H; SPI_InitStructure.SPI_Mode = SPI_Mode_Master; SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;//DMA数据宽度 SPI_InitStructure.SPI_DataWidth = SPI_DataWidth_8b; SPI_InitStructure.SPI_CPOL = SPI_CPOL_High; // mode0 SPI_CPOL_Low, SPI_CPHA_1Edge; SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; // mode3 SPI_CPOL_High,SPI_CPHA_2Edge SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;//SPI最高40MHz,72M最多2分频 SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; SPI_Init(SPI1, &SPI_InitStructure); SPI_Cmd(SPI1, ENABLE); //Enables the specified SPI peripheral SPI使能、主机模式 8位数据模式 SPI 的波特率 SPIM_TXEn(SPI1); SPIM_RXEn(SPI1); } /******************************************************************************************************** **函数信息 :SPIMReadWriteByte(SPI_TypeDef* SPIx,unsigned char tx_data) **功能描述 : 通过外设 SPIx 收发数据 ,用于全双工模式(同时收发) **输入参数 :SPI_TypeDef* SPIx,可选择SPI1,SPI2 ; tx_data **输出参数 :无 ********************************************************************************************************/ u8 SPI1_ReadWriteByte(u8 TxData) { #if IWDG_ON_OFF==IWDG_ON //独立看门狗开启 IWDG_ReloadCounter(); //喂狗 #endif while(SPI_GetFlagStatus(SPI1, SPI_FLAG_TXEPT)==SET){} assert_param(IS_SPI_ALL_PERIPH(SPI1)); SPI1->TXREG = TxData; while (SPI_GetFlagStatus(SPI1, SPI_FLAG_RXAVL)==RESET){} assert_param(IS_SPI_ALL_PERIPH(SPI1)); return SPI1->RXREG; } 我想问下该芯片的SPI1配置有没有问题
9747浏览量 7回复量 关注量 -
PC15 PC14怎样设置成普通的IO?
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE, ENABLE); //使能相应GPIO的时钟 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;//10M时钟速度 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//选择输入模式 //按键 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;//S1 GPIO_InitStructure.GPIO_Pin |= GPIO_Pin_0;//S2 GPIO_Init(GPIOA, &GPIO_InitStructure);//写入设置参数 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;//S3 GPIO_InitStructure.GPIO_Pin |= GPIO_Pin_2;//S4 GPIO_Init(GPIOC, &GPIO_InitStructure);//写入设置参数 //红外管信号 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;//PT1 GPIO_InitStructure.GPIO_Pin |= GPIO_Pin_0;//PT2 GPIO_Init(GPIOC, &GPIO_InitStructure);//写入设置参数 PWR_BackupAccessCmd(ENABLE);//允许修改RTC 和后备寄存器 RCC_LSEConfig(RCC_LSE_OFF);//关闭外部低速外部时钟信号功能 后,PC13 PC14 PC15 才可以当普通IO用。 BKP_TamperPinCmd(DISABLE);//关闭入侵检测功能,也就是 PC13,也可以当普通IO 使用 BKP_ITConfig(DISABLE); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//选择输入模式 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;//PT3 GPIO_InitStructure.GPIO_Pin |= GPIO_Pin_14;//PT4 GPIO_InitStructure.GPIO_Pin |= GPIO_Pin_13;//PT5 GPIO_Init(GPIOC, &GPIO_InitStructure);//写入设置参数
1681浏览量 2回复量 关注量 -
CH573F IO 中断怎么用,是不是漏了什么配置, 一直不进中断
[color=rgb(249, 38, 114)][font=consolas, monospace]void gpio_wake_init() {[/font][/color] [font=consolas, monospace][color=#f92672] //初始化位输入上拉[/color][/font] [font=consolas, monospace][color=#f92672] GPIOB_ModeCfg(GPIO_Pin_4, GPIO_ModeIN_PU);[/color][/font] [font=consolas, monospace][color=#f92672] //开启下降沿中断[/color][/font] [font=consolas, monospace][color=#f92672] GPIOB_ITModeCfg(GPIO_Pin_4,GPIO_ITMode_FallEdge);[/color][/font] [font=consolas, monospace][color=#f92672] //开启GPIO睡眠唤醒[/color][/font] [font=consolas, monospace][color=#f92672] PWR_PeriphWakeUpCfg( ENABLE, RB_SLP_GPIO_WAKE,Edge_LongDelay );[/color][/font] [font=consolas, monospace][color=#f92672] //开启GPIOB中断[/color][/font] [font=consolas, monospace][color=#f92672] PFIC_EnableIRQ(GPIO_B_IRQn);[/color][/font] [font=consolas, monospace][color=#f92672]}[/color][/font] [font=consolas, monospace][color=#f92672] [/color][/font] [font=consolas, monospace][color=#f92672]//中断服务程序[/color][/font] [font=consolas, monospace][color=#f92672]__attribute__((interrupt("WCH-Interrupt-fast"))) //硬件压栈[/color][/font] [font=consolas, monospace][color=#f92672]__attribute__((section(".highcode"))) //放到RAM里[/color][/font] [font=consolas, monospace][color=#f92672]void GPIOB_IRQHandler(void) {[/color][/font] [font=consolas, monospace][color=#f92672] PRINT("gpio interrupt\r\n");[/color][/font] [font=consolas, monospace][color=#f92672] GPIOB_ClearITFlagBit(GPIO_Pin_4);[/color][/font] [font=consolas, monospace][color=#f92672]}[/color][/font] 搜索 [align=left]复制[/align]
3508浏览量 3回复量 关注量 -
GD32E103VB Uart0 sos
为什么我用的GD32E103VB 的Uart打印出来是乱码。。。代码如下:#include "gd32e10x.h" #include "gd32e103v_eval.h" #include "systick.h" #include
/* retarget the C library printf function to the USART */ int fputc(int ch, FILE *f) { usart_data_transmit(USART0, (uint8_t)ch); while(RESET == usart_flag_get(USART0, USART_FLAG_TBE)); return ch; } void uart_init(void) { rcu_periph_clock_enable(RCU_AF); /* enable GPIO clock */ rcu_periph_clock_enable(RCU_GPIOA); //gpio_pin_remap_config(GPIO_USART0_REMAP,ENABLE); /* enable USART clock */ rcu_periph_clock_enable(RCU_USART0); /* connect port to USARTx_Tx */ gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9); /* connect port to USARTx_Rx */ gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_10); //gpio_pin_remap_config(GPIO_USART0_REMAP,ENABLE); /* USART configure */ usart_deinit(USART0); usart_baudrate_set(USART0, 115200U); usart_receive_config(USART0, USART_RECEIVE_ENABLE); usart_transmit_config(USART0, USART_TRANSMIT_ENABLE); usart_enable(USART0); } int main(void) { systick_config(); uart_init(); while(1) { printf("hello world\n"); } } 打印结果如下: l"l"Xl"H$ ll"l"XlDl"l。。。。。。 2259浏览量 0回复量 关注量 -
请问QFN32封装的 MM32L073NT 使用CAN模块有什么特别需要注意的吗 sos
尝试了N和S的CAN库例子,都不成功,TX引脚一直是高电平没有输出。 CAN的GPIO用了PA11和PA12,请问需要特殊处理吗?
1601浏览量 0回复量 关注量 -
想通过初始化GPIO口采集外部电平信号但总是初始化不成功。 sos
[size=14px] Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE); //timer [/size] [size=14px] stc_gpio_cfg_t stcGpioCfg; [/size] [size=14px] stcGpioCfg.enDir = GpioDirIn; [/size] [size=14px] stcGpioCfg.enPu = GpioPuEnable;[/size] [size=14px] stcGpioCfg.enCtrlMode = GpioAHB;[/size] [size=14px] Gpio_Init(GpioPortB, GpioPin6,&stcGpioCfg); [/size] [size=14px] [/size] [size=14px] [/size] [size=14px] while (1) {[/size] [size=14px] [/size] [size=14px] rev_len = DevUART_Read(&gDebugUart, recv_buf, MEM_POOL_BLOCK_SIZE, OS_ALWAYS_DELAY); [/size] [size=14px] uint8_t dian;[/size] [size=14px] //unsigned char *G;[/size] [size=14px] uint8_t *G;[/size] [size=14px] dian=Gpio_GetInputIO(GpioPortB,GpioPin6);[/size] [size=14px] sprintf(G,"%d",dian); [/size] [size=14px] AT_TxFreq(0, G, rev_len);[/size] [size=14px] gEnableRadioRx = true;[/size] [size=14px] osDelayMs(10); [/size]
1554浏览量 0回复量 关注量 -
HC32L110C6UA端口中断问题
华大HC32L110C6UA芯片配置P03端口输入下降沿中断,一旦触发中断就会一直进入端口中断,有对M0P_GPIO->P3ICLR写入0操作,并读取M0P_GPIO->P3ICLR和M0P_GPIO->P0STAT_f 寄存器发现值并没有变化。不知道是有哪里没有设置好,各位大神帮忙看看!如下是程序过程: void Gpio_IRQHandler(uint8_t u8Param){ uint32_t read_stat=0; switch(u8Param) { case 0: { } break; case 1: { } break; case 2: { } break; case 3: { } break; default:; break; } *((uint32_t *)((uint32_t)&M0P_GPIO->P3ICLR + u8Param * 0x40)) = 0; read_stat=*((uint32_t *)((uint32_t)&M0P_GPIO->P3ICLR + u8Param * 0x40)); read_stat=*((uint32_t *)((uint32_t)&M0P_GPIO->P0STAT_f + u8Param * 0x40)); } int32_t main(void) { Gpio_InitIOExt(0, 3, GpioDirIn, FALSE, FALSE, FALSE, FALSE); Gpio_ClearIrq(0, 3); //上升沿 Gpio_EnableIrq(0, 3, GpioIrqFalling); EnableNvic(PORT0_IRQn, DDL_IRQ_LEVEL_DEFAULT, TRUE); while(1) { } }
1425浏览量 2回复量 关注量 -
如何使用一个GPIO管脚控制红灯和绿灯交替显示?
想使用一个单片机GPIO口,5V电平,控制两个12V的灯(红灯和绿灯),实现高电平红灯亮,低电平绿灯亮,有什么简单低成本的实现途径?请大家给出出主意,谢谢!
2432浏览量 8回复量 关注量 -
Chip on IDE KF32 GPIO初始化问题
这个初始化是不是定义的输入口全部上拉,为什么只有定义的最后一个输入口有上拉,前面的口都没有上拉,求解 void GPIOInit_Input_Config(GPIO_SFRmap* GPIOx,uint16_t GpioPin) { /*初始化复位GPIOx外设,使能GPIOx外设时钟*/ GPIO_Reset(GPIOx); /* 配置 Pxy作为输入模式 */ GPIO_InitTypeDef GPIO_InitStructure; //GPIO_Struct_Init(&GPIO_InitStructure); GPIO_InitStructure.m_Pin = GpioPin; GPIO_InitStructure.m_Speed = GPIO_LOW_SPEED; //初始化 GPIO输出速度 GPIO_InitStructure.m_Mode = GPIO_MODE_IN; //初始化 GPIO方向为输入 GPIO_InitStructure.m_PullUp = GPIO_PULLUP;//GPIO_NOPULL; //初始化 GPIO是否上拉 不上拉 GPIO_InitStructure.m_PullDown = GPIO_NOPULL;//GPIO_PULLUP; //初始化 GPIO是否下拉 不下拉 GPIO_Configuration(GPIOx,&GPIO_InitStructure); } 搜索 [align=left]复制[/align]
4140浏览量 14回复量 关注量 -
GPIOA->ODR ^= GPIO_Pin_8影响stm32其他引脚的状态吗 sos
请教各位大神,我用的单片机是STM32。我想用GPIOA->ODR ^= GPIO_Pin_8反转LED的电平,但是GPIOA->PIN12好像也收到了影响。 因为,我用定时器模拟USART的115200波特率,更新中断周期是1S/115200,控制PIN12驱动一个模块。当我在主函数中加入GPIOA->ODR ^= GPIO_Pin_8后,模块驱动失败,取消后,模块就可以正常工作。 但是GPIOA->ODR ^= GPIO_Pin_8这行代码,应该不会影响到别的IO口吧。更换成下面的代码,也没有问题。 if((GPIOA->ODR&GPIO_Pin_8)==0) GPIOA->BSRR = GPIO_Pin_8; else GPIOA->BRR = GPIO_Pin_8; 希望大神能帮我解答。谢谢
1271浏览量 0回复量 关注量