跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
折叠
品牌标识

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YTM32B1M系列
  4. 基于MCAL,如何重新初始化引脚功能?

基于MCAL,如何重新初始化引脚功能?

已定时 已固定 已锁定 已移动 已解决 YTM32B1M系列
12 帖子 3 发布者 1.8k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • OliverChenO 离线
    OliverChenO 离线
    OliverChen
    写于 最后由 编辑
    #1

    在使用UART和一些Driver芯片通讯时,有时候需要将UART的TX引脚配置为GPIO功能,持续一段低电平之后,再配置为UART功能,那么在使用MCAL的时候,如何去实现这个操作?我这样操作好像没办法实现切换GPIO控制。

    void BusReset(){
        uint8 CmdTable_SyncByte[1] = {0x55U};
        Port_SetPinMode(PORT_HW_PORT_PIN(2, 7), PORT_PIN_MODE_GPIO);
        Dio_WriteChannel(DioConf_DioChannel_PTC7_UART1_TX, STD_LOW);
        //	delay_us(150);
        for(uint32 i=0;i<120000;i++) {
            __NOP();
        }
        Dio_WriteChannel(DioConf_DioChannel_PTC7_UART1_TX, STD_HIGH);
        //	USART1_Config(ispeed);
        Port_SetPinMode(PORT_HW_PORT_PIN(2, 7), PORT_PIN_MODE_ALT2);
        CddUart_SyncSend(0, CmdTable_SyncByte, 1, 1000);
    }
    
    1 条回复 最后回复
    0
    • OliverChenO 离线
      OliverChenO 离线
      OliverChen
      在 回复了 Kirk 最后由 编辑
      #10

      @quanfeng 好的,我按照提到的这些步骤可以实现需求了,这样使用会引发其他问题吗?因为我可能需要周期去执行这些步骤。

      void BusReset(void)
      {
          uint8 CmdTable_SyncByte[1] = {0x55U};
          Port_SetPinMode(PORT_HW_PORT_PIN(2, 7), PORT_PIN_MODE_GPIO);
          Port_SetPinDirection(PORT_HW_PORT_PIN(2, 7), PORT_PIN_OUT);
          Dio_WriteChannel(DioConf_DioChannel_PTC7_UART1_TX, STD_LOW);
          //	delay_us(150);
          for(uint32 i=0;i<2000;i++) {
              __NOP();
          }
          //	USART1_Config(ispeed);
          Port_SetPinMode(PORT_HW_PORT_PIN(2, 7), PORT_PIN_MODE_ALT2);
          CddUart_SyncSend(0, CmdTable_SyncByte, 1, 1000);
      }
      

      28e68c8d-5a38-4390-939c-942bb83bed25-image.png

      KirkK 1 条回复 最后回复
      0
      • 向阳向 离线
        向阳向 离线
        向阳 YunTu
        写于 最后由 编辑
        #2

        image.png这一项关没有

        OliverChenO 1 条回复 最后回复
        0
        • OliverChenO 离线
          OliverChenO 离线
          OliverChen
          在 回复了 向阳 最后由 编辑
          #3

          向阳 这里关了,但是也没用,初始化的时候只是初始化为Uart了,直接切换Mode有影响吗
          a8e85989-5853-47a8-ac9d-8dc0a000f3b8-image.png

          向阳向 1 条回复 最后回复
          0
          • 向阳向 离线
            向阳向 离线
            向阳 YunTu
            写于 最后由 向阳 编辑
            #4

            不好意思,我搞反了,是要勾上

            OliverChenO 1 条回复 最后回复
            0
            • 向阳向 离线
              向阳向 离线
              向阳 YunTu
              在 回复了 OliverChen 最后由 向阳 编辑
              #5
              此主題已被删除!
              1 条回复 最后回复
              0
              • OliverChenO 离线
                OliverChenO 离线
                OliverChen
                在 回复了 向阳 最后由 编辑
                #6

                向阳 也不行诶

                1 条回复 最后回复
                0
                • KirkK 离线
                  KirkK 离线
                  Kirk YunTu
                  写于 最后由 编辑
                  #7

                  除了调用 SetPinMode 从 UART 配置到 GPIO,还要配置 IO 的输入输出方向

                  OliverChenO 1 条回复 最后回复
                  1
                  • OliverChenO 离线
                    OliverChenO 离线
                    OliverChen
                    在 回复了 Kirk 最后由 编辑
                    #8

                    @quanfeng 这部分是要自己手动实现吗?mcal有可用的例程吗?

                    1 条回复 最后回复
                    0
                    • KirkK 离线
                      KirkK 离线
                      Kirk YunTu
                      写于 最后由 编辑
                      #9

                      有 API:Port_SetPinDirection

                      OliverChenO 1 条回复 最后回复
                      0
                      • OliverChenO 离线
                        OliverChenO 离线
                        OliverChen
                        在 回复了 Kirk 最后由 编辑
                        #10

                        @quanfeng 好的,我按照提到的这些步骤可以实现需求了,这样使用会引发其他问题吗?因为我可能需要周期去执行这些步骤。

                        void BusReset(void)
                        {
                            uint8 CmdTable_SyncByte[1] = {0x55U};
                            Port_SetPinMode(PORT_HW_PORT_PIN(2, 7), PORT_PIN_MODE_GPIO);
                            Port_SetPinDirection(PORT_HW_PORT_PIN(2, 7), PORT_PIN_OUT);
                            Dio_WriteChannel(DioConf_DioChannel_PTC7_UART1_TX, STD_LOW);
                            //	delay_us(150);
                            for(uint32 i=0;i<2000;i++) {
                                __NOP();
                            }
                            //	USART1_Config(ispeed);
                            Port_SetPinMode(PORT_HW_PORT_PIN(2, 7), PORT_PIN_MODE_ALT2);
                            CddUart_SyncSend(0, CmdTable_SyncByte, 1, 1000);
                        }
                        

                        28e68c8d-5a38-4390-939c-942bb83bed25-image.png

                        KirkK 1 条回复 最后回复
                        0
                        • KirkK 离线
                          KirkK 离线
                          Kirk YunTu
                          在 回复了 OliverChen 最后由 编辑
                          #11

                          OliverChen 这样基本都是要满足通讯芯片的特定通讯时序或者需要特定电平唤醒等,一般不会引发其他问题

                          OliverChenO 1 条回复 最后回复
                          0
                          • OliverChenO 离线
                            OliverChenO 离线
                            OliverChen
                            在 回复了 Kirk 最后由 编辑
                            #12

                            @quanfeng 好的了解了,多谢支持👍

                            1 条回复 最后回复
                            0
                            • ,FrankieF Frankie 将这个主题转为问答主题
                            • ,FrankieF Frankie 将这个主题标记为已解决

                          • 云途开发生态介绍

                            快速上手云途开发生态

                          • 云途论坛规则/Yuntu Forum Rules

                            发帖前请查看

                          • YT CONFIG TOOL调查问卷

                            帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...

                          • can
                            25
                            demo
                            22
                            lin stack
                            13
                            uds
                            13
                            md14
                            6
                            yt-link
                            6
                            fbl
                            5
                            adc模块
                            4
                            Online Users
                            • 登录

                            • 登录或注册以进行搜索。
                            • 第一个帖子
                              最后一个帖子
                            0
                            • 版块
                            • 最新
                            • 标签
                            • 热门