本帖最后由 非凡378159128 于 2021-4-10 22:49 编辑
工程文件:IAR V6.7
HK32F030MJ4M6-IOMUX-IAR_V6.7.zip
(255.25 KB, 下载次数: 7)
首先已经宏定义了芯片型号
- #define HK32F030MJ4M6 //定义芯片型号
用以下代码可以成功的把HK32F030MJ4M6的第1脚输出高电平点亮LED
- int main(void)
- {
- GPIO_InitTypeDef m_gpio;
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_IOMUX, ENABLE);
- RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
- RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
- RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
- RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOD, ENABLE);
- m_gpio.GPIO_Mode = GPIO_Mode_OUT;
- m_gpio.GPIO_OType = GPIO_OType_PP;
- m_gpio.GPIO_PuPd = GPIO_PuPd_NOPULL;
- m_gpio.GPIO_Speed = GPIO_Speed_Level_2;
- m_gpio.GPIO_Pin = GPIO_Pin_6;
- GPIO_Init(GPIOD, &m_gpio);
- GPIO_SetBits(GPIOD, GPIO_Pin_6);
- while (1)
- {
- }
- }
但是用以下代码则无法把HK32F030MJ4M6的第1脚输出高电平
- int main(void)
- {
- GPIO_InitTypeDef m_gpio;
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_IOMUX, ENABLE);
- RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
- RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
- RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
- RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOD, ENABLE);
- m_gpio.GPIO_Mode = GPIO_Mode_OUT;
- m_gpio.GPIO_OType = GPIO_OType_PP;
- m_gpio.GPIO_PuPd = GPIO_PuPd_NOPULL;
- m_gpio.GPIO_Speed = GPIO_Speed_Level_2;
- //PD6 TO PA1 as GPIO
- m_gpio.GPIO_Pin = GPIO_Pin_1;
- GPIO_IOMUX_ChangePin(IOMUX_PIN1, IOMUX_PD6_SEL_PA1); //SOP8 PIN1(PD6) PA1 IO
- GPIO_Init(GPIOA, &m_gpio);
- GPIO_SetBits(GPIOA, GPIO_Pin_1);
- while (1)
- {
- }
- }
也试过直接用寄存器操作也是没有任何效果
- GPIOMUX->PKG_PIN_SEL |= IOMUX_PD6_SEL_PA1;
就像是IOMUX时钟没有被打开一样
所以不止是第1脚不能映射,所有支持映射的IO管脚都试过都不行
不知道有朋友遇到过类似问题没?
注:我试过HK32F030MF4P6可以成功将NRST管脚映射成PA0使用,但HK32F030MJ4M6死活不行,
- GPIOMUX->NRST_PIN_KEY = 0x5AE1;
- GPIOMUX->NRST_PA0_SEL = 0x01; //将NRST管脚映射为PA0管脚使用
结贴:芯片的问题,换一个芯片就好了,芯片居然只坏端口映射部分
|