1、在51单片机里 ,下面这两种操作方法都是一样的,没有什么问题!
(1) 、OUT1_R1 是单片机的一个IO口 , dat是传进来的一个数据
if ( (dat & 0x80) == 0)
OUT1_R1 = 0; // 0是不亮,1是亮
else
OUT1_R1 = 1;
(2)、
OUT1_R1 = (dat&0x8000); // stm32里,这样操作不行,因为stm32里没有bit ; 在51里会自动把(dat&0x8000)强制转化为bit 。
2、但是在编译 stm32的keil 里编译上面的两个程序,就发生了不同。
在STM32里, (1) 是可以正常的往IO里输入数据的,但是(2)却不能!我猜测是STM32里不支持位操作( 没有bit )!才导致这种差异!
我在调试LED屏幕的时候,遇到了这个问题,我当时做梦都没想到,这句话竟然有问题。
在此,强烈建议:遇到问题,多使用仿真器!(这种神器,也算是调试必备了! 学生党太穷了,之前自学stm32也没舍得花钱买jlink仿真器!)
关键字:stm32 位赋值
引用地址:
stm32 奇怪的位赋值问题 出错了
推荐阅读最新更新时间:2024-03-16 16:21
STM32的LCD12864液晶显示源程序
单片机源程序如下: #include config.h int main(void) { // int i=0,j=0; // int count=0; Stm32_Clock_Init(9);//系统时钟设置 delay_init(72); //延时初始化 //LED_Init(); //初始化与LED连接的硬件接口 Init_12864(); //初始化带字库12864液晶 // Display_string(0,0, 单片机综合设计 ); //显示第1行 // Display_st
[单片机]
为什么要串口唤醒STOP模式?如何才能实现串口唤醒STOP模式呢?
前言 STM32常见的低功耗模式有三种:睡眠模式、STOP模式以及待机模式,STM32L系列还有其他低功耗模式。这里主要讲的是STOP模式,STOP模式可以通过外部中断或事件唤醒,但是不能通过串口中断唤醒,因为串口中断本身不是外部中断,那么如何才能实现串口唤醒STOP模式呢? 因为我这里只是为了做验证,为了快速验证,我也就没有用RT-Thread的PM电源管理组件进入STOP模式,感兴趣的读者可以用RT-Thread的电源管理组件去实现进行STOP模式。 一、为什么要串口唤醒STOP模式? 想象一下,在某些场合,如果你有一个无线通信模块(例如ESP8266、SIM800C)和STM32通过串口发送AT命令来对接服务器实现与服务
[单片机]
STM32笔记---DMA(USART)的演示
这里有个小小的例子,来演示DMA模块与系统程序并行工作。 用串口以低波特率发送一个10K的数据,花费近10s时间,此时按照以往方法,CPU要不断等待数据发送、送数据;或者送数据、进中断、送数据,处理起来比较消耗时间。 使用了DMA功能以后,用户程序中只需配置好DMA,开启传输后,再也不需要操心,10K数据完成后会有标志位或中断产生,期间可以做任何想做的事,非常方便。 这个是相应的代码例子,基于STM32F103VBT6 /****************************************************************************** * 本文件实现串口发送功能(通过重构
[单片机]
ST发布STSAFE-A100评估套件,扩大STM32 Nucleo生态系统
意法半导体发布了STSAFE-A100评估套件,将进一步扩大STM32 Nucleo生态系统的丰富资源,加快安全单元的集成设计,利用可复用源代码以简化安全物联网设备、医疗探针等高价耗材、IT配件和消费产品的开发设计流程。 该评估套件包括集成STSAFE-A100安全单元的X-NUCLEO-STSA100扩展板和STSW-STSA100软件包。软件包括设备驱动程序、STM32微控制器源代码和STSAFE-A100的用例源代码,包括品牌和生态系统保护、设备注册和安全云连接等用例。 STSAFE-A100是一款便于使用的8引脚安全单元,可为主机系统提供稳健的不可变的硬件身份验证和安全数据管理服务,具有极强的网络攻击防御能力
[单片机]
关于STM32的PWM问题集锦
1、STM32F10X定时器PWM输入模式测量频率、占空比精度问题 问:今天使用了STM32F10X定时器PWM输入模式,用来测量输入方波信号的频率和占空比,发现精度不高,设置定时器的时钟频率为36MHz,预分频为35,计数频率为1MHz,即精度为1us,当输入信号为500Hz时,测量值为500Hz,当输入信号为1KHz时,测量值为1000.1,当输入信号频率继续增加时,测量误差越大,之后提高定时器的技术频率为72MHz,精度有提高,但是输入信号频率增加,误差越大,同时对于低频信号需要使用更新中断才能处理。 请假各位大侠是如何处理精度和低频信号测量的问题? 答:能不能看看你的代码配置。还有要注意TIM的范围,可能约接近
[单片机]
意法半导体STM32软件包,让简单的物联网产品
意法半导体的X-CUBE-AVS软件包让亚马逊的Alexa语音服务(AVS)能够运行在STM32*微控制器上,使具有云智能功能(自动语音识别和自然语言理解)的高级会话用户界面出现在简单的物联网设备上,例如,智能家电、家庭自动化设备和办公设备。 作为STM32Cube软件平台的扩展包,X-CUBE-AVS包含直接可用的固件库和开放例行程序,这有助于将AVS SDK(软件开发套件)快速移植到微控制器上。此外,该软件包还集成应用代码示例,开发人员无需开发嵌入式设备运行AVS所需的复杂软件层。AVS开发工具通常是为能耗和价格较高的微处理器设计,而X-CUBE-AVS是同类首个微控制器专用软件包,让更多的开发人员和项目可以使用Ale
[物联网]
18. 利用TIM3产生PWM输出实验
一。 PWM简介 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。 STM32 的定时器除了 TIM6 和 7。其他的定时器都可以用来产生 PWM 输出。其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。而通用定时器也能同时产生多达 4路的 PWM 输出,这样,STM32 最多可以同时产生 30 路 PWM 输出。 这里我们仅利用 TIM3的 CH2 产生一路 PWM 输出。 对于每个通道都有一个捕获比较寄存器CCRx,C
[单片机]
STM32中断优先级详解
一、STM32中断优先级属性 STM32有两种优先级属性,分别为抢占式优先级和响应式优先级。其中,响应式优先级也称为副优先级。 具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套。 当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。 二、STM32中断优先级数目分组 STM32为了适应不同的优先级组合
[单片机]