
本帖最后由 哀歌与世无争 于 2018-2-22 12:40 编辑 STM32CubeMX设置PC13和PA1为推挽输出,速度50M,用LL库生成的代码如下:
![]() PC13被初始化成模拟输入了,而PC5没有设置却变成了推挽输出了。 PA1倒是没有错误,GPIOA寄存器如图: ![]() 总结: 后面又试了几个引脚,发现用LL库高位的引脚(GPIO8-15)初始化会有问题,像PC13,PB13这样的高位引脚,设置后实际改变的是对应低位的引脚PC5和PB5,而想要配置的引脚却变成其他模式了。如果初始化是低位的引脚(GPIO0-7)不会有错误,像PA1,PB1就能被正确初始化。 大家有没有遇到这样的问题呢? |
CubeMX 生成的 STM32H7 CMake 工程打开串口 DMA 无法正常发送数据,如何解决?
STM32CubeMx生成代码错误
使用CubeMX能配置STM32L4XX芯片的低功耗模式吗?
2.0 CubeIDE大概更新时间?
smt32h5 gpdma LL库无法初始化?
低速晶振不起振问题
STM32双核H7核间通信的方法
yolov5 转onnx 在cubeAI进行部署的时候 部署失败 我想一下大佬们这是什么原因
使用STM32F1能实现USB和fatfs同时访问SD卡吗
STM32F407ZGT6的SD卡通过DMA控制时,无法从外部SRAM取数据
环境STM32CubeMX 4.24.0,MDK 5.24
CUBEMX HAL stm32f030 主程序while发送,中断接收1个字节,有几率无法再开启中断接收。
主程序while只是打印几个变量值
printf("\r\n-----RcvCount=%8d , ErrCount=%8d RcErrCount=%8d\r\n",RcvCount,ErrCount,RcErrCount);
HAL_Delay(100);
中断接收 HAL_UART_Receive_IT(&huart1,(uint8_t*) &Uart1_Rx_Byte,1); //再次接收1个字符
里面什么都不干。
pc机100ms发送 0123456789. 一下就开始出现接收溢出,串口忙接收中断无法再开启启动的问题了
就这么简单的中断接收消息,主线程发送消息,一两百个字节就错误的无法用了。STM的库还能放心用在项目上?纯粹是熟悉和玩玩的摆设,能动不能用。
你的STM32F1是哪个系列的,具体什么型号?F1的型号太多了。
感觉不至于出现这样的问题呀,发个工程上来瞧瞧
LL库没玩过,不过我常用的F103系列中,印象是PC13速度不超过2MHZ,具体出自哪里,一时没找到。
我用HAL是好的,前几天刚测试过“YD-STMF1系列核心板”,就是某宝上出现最多的那个STM32F103C8T6小板板,上面的LED用的就是PC13,闪灯灯好着呢。
HAL库出来很久了,用了没啥问题,STM32F1的LL库最近才出的,发现有这个现象才来问问大家的。
没有质疑,只是有疑问,有什么不当的地方请指出
不好搞,用了很多宏,有的还是编译器的关键字,晦涩难懂,最好等官方完善了。还是标准库好,简单的封装,使用稳定。现在为了可视化出了cubemx和这两个库,碎片化严重。
可以试着修复一下嘛~我直接改pinpos并不能正确初始化,后面还有一个currenpin,应该是指向正确的寄存器位置,然后我干脆寄存器初始化了,后面又发现USART那似乎也存在问题,这里用似乎哈,昨晚太晚没深究。
currenpin后面有个 LL_GPIO_SetPinMode(GPIOx, currentpin, GPIO_InitStruct->Mode)函数,经过这个函数后寄存器的值就开始不对了,跟踪进去里面有个
MODIFY_REG(*pReg, ((GPIO_CRL_CNF0|GPIO_CRL_MODE0) << (POSITION_VAL(Pin) * 4U)), (Mode << (POSITION_VAL(Pin) * 4U)));
看名字是在修改寄存器的值,但是这个东西全是用宏定义拼起来的,太多宏太恶心了,实在看不下去了。
sssssssssssssssssss