-
关于国民技术n32G43的端口重映射问题【迫在眉头】 sos
[color=#333333][backcolor=rgb(245, 245, 245)][font=Menlo, Monaco, "][size=12px] 我想开启开启USART1引脚重映射(从PA9/PA10映射到PB6/PB7)。但我始终还是无法成功。 国民技术欠缺函数帮助文档,这个让我很难解决。玛法各位大佬帮我,导致问题出在哪? 帮我修正下代码。 ``` [color=#aaaaaa][i]#include "n32g43x.h" // Device header[/i][/color] [color=#aaaaaa][i]#include "systick.h"[/i][/color] [color=#aaaaaa][i]#include
[/i][/color] void GPIO_LED_Init() { GPIO_InitType GPIO_InitStruct[color=#aaaaaa][i];[/i][/color] RCC_EnableAPB2PeriphClk(RCC_APB2PCLKEN_IOPAEN, ENABLE)[color=#aaaaaa][i];[/i][/color] [color=#4b69c6]GPIO_InitStruct.Pin[/color] [color=#777777]=[/color] GPIO_PIN_8[color=#aaaaaa][i];[/i][/color] [color=#4b69c6]GPIO_InitStruct.GPIO_Mode[/color] [color=#777777]=[/color] GPIO_Mode_Out_OD[color=#aaaaaa][i];[/i][/color] [color=#4b69c6]GPIO_InitStruct.GPIO_Current[/color] [color=#777777]=[/color] GPIO_DC_2mA[color=#aaaaaa][i];[/i][/color] GPIO_InitPeripheral(GPIOA, &GPIO_InitStruct)[color=#aaaaaa][i];[/i][/color] } void USART1_init() { GPIO_InitType GPIO_InitStruct_Tx[color=#aaaaaa][i];[/i][/color] GPIO_InitType GPIO_InitStruct_Rx[color=#aaaaaa][i];[/i][/color] // /* --------------- USART1 默认端口的配置 配置开始 --------------- */ // RCC_EnableAPB2PeriphClk(RCC_APB2PCLKEN_IOPAEN, ENABLE)[color=#aaaaaa][i];[/i][/color] // // // Tx PA9 复用输出推挽 // [color=#4b69c6]GPIO_InitStruct_Tx.Pin[/color] [color=#777777]=[/color] GPIO_PIN_9[color=#aaaaaa][i]; [/i][/color] // [color=#4b69c6]GPIO_InitStruct_Tx.GPIO_Mode[/color] [color=#777777]=[/color] GPIO_Mode_AF_PP[color=#aaaaaa][i];[/i][/color] // [color=#4b69c6]GPIO_InitStruct_Tx.GPIO_Alternate[/color] [color=#777777]=[/color] GPIO_AF4_USART1[color=#aaaaaa][i];[/i][/color] // // GPIO_InitPeripheral(GPIOA, &GPIO_InitStruct_Tx)[color=#aaaaaa][i];[/i][/color] // // Rx PA10 输入浮空输入上拉 // [color=#4b69c6]GPIO_InitStruct_Rx.Pin[/color] [color=#777777]=[/color] GPIO_PIN_10[color=#aaaaaa][i];[/i][/color] // [color=#4b69c6]GPIO_InitStruct_Rx.GPIO_Pull[/color] [color=#777777]=[/color] GPIO_Pull_Up[color=#aaaaaa][i];[/i][/color] // [color=#4b69c6]GPIO_InitStruct_Rx.GPIO_Alternate[/color] [color=#777777]=[/color] GPIO_AF4_USART1[color=#aaaaaa][i];[/i][/color] // // GPIO_InitPeripheral(GPIOA, &GPIO_InitStruct_Rx)[color=#aaaaaa][i];[/i][/color] // /* --------------- USART1 默认端口的配置 配置结束 --------------- */ /* 如果PA9和PA10端口被占用,则可以通过配置重映射端口 */ RCC_EnableAPB2PeriphClk(RCC_APB2PCLKEN_AFIOEN, ENABLE)[color=#aaaaaa][i]; // 使能AFIO模块的时钟[/i][/color] //配置重映射寄存器,使能重映射功能 // GPIO_ConfigPinRemap(GPIOB_PORT_SOURCE, GPIO_PIN_SOURCE6, GPIO_AF1_USART1)[color=#aaaaaa][i];[/i][/color] // GPIO_ConfigPinRemap(GPIOB_PORT_SOURCE, GPIO_PIN_SOURCE7, GPIO_AF1_USART1)[color=#aaaaaa][i];[/i][/color] RCC_EnableAPB2PeriphClk(RCC_APB2PCLKEN_IOPBEN, ENABLE)[color=#aaaaaa][i];[/i][/color] // Tx PB6 复用输出推挽 [color=#4b69c6]GPIO_InitStruct_Tx.Pin[/color] [color=#777777]=[/color] GPIO_PIN_6[color=#aaaaaa][i];[/i][/color] [color=#4b69c6]GPIO_InitStruct_Tx.GPIO_Mode[/color] [color=#777777]=[/color] GPIO_Mode_AF_PP[color=#aaaaaa][i];[/i][/color] [color=#4b69c6]GPIO_InitStruct_Tx.GPIO_Alternate[/color] [color=#777777]=[/color] GPIO_AF4_USART1[color=#aaaaaa][i];[/i][/color] GPIO_InitPeripheral(GPIOB, &GPIO_InitStruct_Tx)[color=#aaaaaa][i];[/i][/color] // Rx PB7 输入浮空输入上拉 [color=#4b69c6]GPIO_InitStruct_Rx.Pin[/color] [color=#777777]=[/color] GPIO_PIN_7[color=#aaaaaa][i];[/i][/color] [color=#4b69c6]GPIO_InitStruct_Rx.GPIO_Mode[/color] [color=#777777]=[/color] GPIO_Mode_Input[color=#aaaaaa][i];[/i][/color] [color=#4b69c6]GPIO_InitStruct_Rx.GPIO_Pull[/color] [color=#777777]=[/color] GPIO_Pull_Up[color=#aaaaaa][i];[/i][/color] [color=#4b69c6]GPIO_InitStruct_Tx.GPIO_Alternate[/color] [color=#777777]=[/color] GPIO_AF4_USART1[color=#aaaaaa][i];[/i][/color] GPIO_InitPeripheral(GPIOB, &GPIO_InitStruct_Rx)[color=#aaaaaa][i];[/i][/color] /* --------------- 端口映射配置结束 --------------- */ USART_InitType USART_InitStruct[color=#aaaaaa][i];[/i][/color] RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_USART1, ENABLE)[color=#aaaaaa][i]; // 开启时钟[/i][/color] [color=#4b69c6]USART_InitStruct.BaudRate[/color] [color=#777777]=[/color] 115200[color=#aaaaaa][i]; // 波特率115200[/i][/color] [color=#4b69c6]USART_InitStruct.Mode[/color] [color=#777777]=[/color] USART_MODE_TX | USART_MODE_RX[color=#aaaaaa][i]; // 双向[/i][/color] [color=#4b69c6]USART_InitStruct.WordLength[/color] [color=#777777]=[/color] 8[color=#aaaaaa][i]; // 8位数据位[/i][/color] [color=#4b69c6]USART_InitStruct.StopBits[/color] [color=#777777]=[/color] USART_STPB_1[color=#aaaaaa][i]; // 1位停止位[/i][/color] [color=#4b69c6]USART_InitStruct.Parity[/color] [color=#777777]=[/color] USART_PE_NO[color=#aaaaaa][i]; // 无校验[/i][/color] USART_Init(USART1, &USART_InitStruct)[color=#aaaaaa][i];[/i][/color] USART_Enable(USART1, ENABLE)[color=#aaaaaa][i]; // 使能USART1 总开关[/i][/color] } void MY_USART_SendBytes(USART_Module* USARTx, uint8_t *pData, uint16_t Size) { for (uint16_t [color=#4b69c6]i[/color] [color=#777777]=[/color] 0[color=#aaaaaa][i]; i < Size; i++)[/i][/color] { // [color=#aaaaaa][i]#1. 等待发送数据寄存器空[/i][/color] while(USART_GetFlagStatus(USARTx, USART_FLAG_TXDE) == RESET)[color=#aaaaaa][i];[/i][/color] // [color=#aaaaaa][i]#2. 将要发送的数据写入到发送数据寄存器[/i][/color] USART_SendData(USARTx, pData[i])[color=#aaaaaa][i];[/i][/color] } // [color=#aaaaaa][i]#3. 等待数据发送完成[/i][/color] while(USART_GetFlagStatus(USARTx, USART_FLAG_TXC) == RESET)[color=#aaaaaa][i];[/i][/color] } /* retarget the C library printf function to the USART */ int fputc(int ch, FILE* f) { // [color=#aaaaaa][i]#1. 等待发送数据寄存器空[/i][/color] while (USART_GetFlagStatus(USART1, USART_FLAG_TXDE) == RESET)[color=#aaaaaa][i];[/i][/color] // [color=#aaaaaa][i]#2. 写入发数据寄存器当中[/i][/color] USART_SendData(USART1, (uint8_t)ch)[color=#aaaaaa][i];[/i][/color] [color=#777777] [/color][color=#aaaaaa][i];[/i][/color] return (ch)[color=#aaaaaa][i];[/i][/color] } int main(void) { RCC_ClocksType RCC_ClocksStruct[color=#aaaaaa][i];[/i][/color] RCC_GetClocksFreqValue(&RCC_ClocksStruct)[color=#aaaaaa][i];[/i][/color] systick_config()[color=#aaaaaa][i];[/i][/color] USART1_init()[color=#aaaaaa][i];[/i][/color] GPIO_LED_Init()[color=#aaaaaa][i];[/i][/color] // uint8_t byTwoSend[] = {1,2,3,4,5}[color=#aaaaaa][i]; [/i][/color] // MY_USART_SendBytes(USART1, byTwoSend, 5)[color=#aaaaaa][i];[/i][/color] printf([color=#777777]"[/color][color=#448c27]\r\nCK_SYS is %d[/color][color=#777777]"[/color], RCC_ClocksStruct.SysclkFreq)[color=#aaaaaa][i]; // 打印当前的系统时钟[/i][/color] while(1) { // [color=#aaaaaa][i]#1. 等待接收数据寄存器RDR非空[/i][/color] while (USART_GetFlagStatus(USART1, USART_FLAG_RXDNE) == RESET)[color=#aaaaaa][i];[/i][/color] // [color=#aaaaaa][i]#2. 读取数据[/i][/color] uint8_t [color=#4b69c6]byte_rcvd[/color] [color=#777777]=[/color] USART_ReceiveData(USART1)[color=#aaaaaa][i];[/i][/color] // [color=#aaaaaa][i]#3. 对数据进行处理[/i][/color] if ([color=#4b69c6]byte_rcvd[/color] [color=#777777]=[/color]= [color=#777777]'[/color][color=#448c27]0[/color][color=#777777]'[/color]) GPIO_WriteBit(GPIOA, GPIO_PIN_8, Bit_RESET)[color=#aaaaaa][i];[/i][/color] else if ([color=#4b69c6]byte_rcvd[/color] [color=#777777]=[/color]= [color=#777777]'[/color][color=#448c27]1[/color][color=#777777]'[/color]) GPIO_WriteBit(GPIOA, GPIO_PIN_8, Bit_SET)[color=#aaaaaa][i];[/i][/color] } } ``` [/size][/font][/backcolor][/color] 3841浏览量 0回复量 关注量 -
国民技术官方DFU驱动在哪下载
[b][font=Microsoft Yahei, Hei, Tahoma, SimHei, sans-serif][color=#444444][size=14px]N32G43XRL_STB_V1.1把NS-LINK程序给刷掉了,查半天论坛说要连上DFU,用国民技术下载工具重新烧写一个,现在卡在DFU了,找半天只从论坛里找到一个驱动,安装提示没有数字签名,咱也不敢安,只能来论坛求助[/size][/color][/font][img]https://bbs.21ic.com/static/image/smiley/comcom/9.gif[/img][/b]
3917浏览量 6回复量 关注量 -
关于N32G4系列芯片调试器问题!! sos
@国民技术支持 请问贵司的N32G4系列芯片支持的调试器有哪些?? 1、ST-Link是否支持调试? 2、贵司技术支持电话都打不通,是不是贵司就没有技术支持???
656浏览量 0回复量 关注量